keita_nakamoriです。視線と地面オブジェクトとの交点を検出するスクリプトを書いていきましょう。
ポイントは下記スクリプトのコメントへメモっておきました。
LookMoveTo スクリプト
当該スクリプトは、前回やったWalkTargetと同様にWalkTarget2というオブジェクトをAIThirdPersonControllerが追跡するように、walkTarget2へアタッチします。
よって、名称もLookMoveToという追跡対象っぽいスクリプト名にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class LookMoveTo : MonoBehaviour { //当該スクリプトは1人称カメラの方向を検知し、 //その方向にレイを飛ばし、 //障害物までの位置情報を得て、 //WalkTarget2オブジェクトをそこへ強制移動させる機能を有する。 //レイの衝突を検出する対象をインスペクターパネルから設定するために、 //パブリック変数groundとして定義する。 public GameObject ground; void Update () { //ローカル変数を定義する:camera , ray , hit , hitObject //現在アクティブなカメラオブジェクトCamera.mainのtransform情報を保持する。 Transform camera = Camera.main.transform; //レイrayを定義する。 Ray ray; //レイキャストからの当たり判定を保持する変数。 //旧:RaycastHit hit; hitは後述のforループの中で定義する。 RaycastHit[] hits; //rayが衝突したオブジェクト情報を保持する変数。 GameObject hitObject; //レイを描く //引数:レイの開始座標,レイの方向ベクトル(クオータニオンとして) Debug.DrawRay(camera.position, camera.rotation * Vector3.forward * 100.0f); //カメラからのrayを保持する。引数(レイの開始座標,レイの方向ベクトル(単位長さ)) ray = new Ray(camera.position, camera.rotation*Vector3.forward); //追加コード:レイが衝突したオブジェクト全てを検出し、hitsリストに格納する。 hits = Physics.RaycastAll(ray); //追加コード:hitsリストの中でgroundオブジェクトがないか探して、 // あったら実行するように変更する。 for(int i = 0; i < hits.Length; i++){ //レイキャストからの当たり判定を保持する変数hit。hitsリストの1要素。 RaycastHit hit = hits[i]; //衝突したオブジェクトは hit.collider.gameObject に //格納されているので、取り出す。 hitObject = hit.collider.gameObject; //衝突したオブジェクトが、インスペクター上で設定したオブジェクトのとき if (hitObject == ground){ //衝突座標hit.pointを出力する Debug.Log("Hit (x,y,z):" + hit.point.ToString("F2")); //当該スクリプトがアタッチされているオブジェクトの座標transform.positionを //レイの衝突座標hit.pointへ強制的に変更する。 transform.position = hit.point; } } } } |
The following two tabs change content below.
Keita N
最新記事 by Keita N (全て見る)
- 2024/1/13 ビットコインETFの取引開始:新たな時代の幕開け - 2024年1月13日
- 2024/1/5 日本ビジネスにおける変革の必要性とその方向性 - 2024年1月6日
- 2024/1/3 アメリカ債権ETFの見通しと最新動向 - 2024年1月3日