プログラム研究 備忘録

java,C#,Unity等の備忘録です。経済理論も少し。

Unity Ray

PhysicsクラスのRayCast関数を使うと光線を飛ばし、

光線が当たった物体やその位置を調べることができます。

 

RayCastを使ってユーザーがクリックした画面上の位置からゲーム世界の位置を求める。

 

例として原点の10m上空から下に向かうRay

Ray ray = new Ray(new Vector3(0,10,0),Vector3.down);

 

CameraクラスのScreenPointToRay関数を使用すると、、

Ray ray = Camera.main.ScreenPointToRay(clickpos);//Rayを飛ばす

 

layerMaskは探索するレイヤーを指定できる。

LayerMask.NameToLayer("Ground")

 

地面と交差した位置を求める

RaycastHit hitInfo;//交差した位置やその物体の情報をRayCast関数によって代入
if(Physics.Raycast(ray,out hitInfo,RayCastMaxDistance,1 << //地面に当たったかを調べるLayerMask.NameToLayer("Ground"))) {//設定すべきビットフィールド
SendMessage("SetDestination",hitInfo.point);