質問: new Vector3(Mathf.Floor(hitInfo.point.x + 0.5f), Mathf.Floor(hitInfo.point.y + 0.5f) - 0.5f, Mathf.Floor(hitInfo.point.z + 0.5f)); } } } ### 補足情報(FW/ツールのバージョンなど) Unity2017.3.1f1
回答: > > 法線の分というのは、Rayが当たった所の面の向きにずらすということです。 > > > 現在のコードだと「どの面に当たったか」という情報が無いので、何処に当たっても同じ方向に動きます。 また、0.5m分しか動いていないので、ブロックの大きさによっては「1ブロックずらす」ことにはならないでしょう。 衝突した面の角度は「hitInfo.normal」で取れます。 なので以下のような形になるかと思います(動作未検証)。 ``` public class RayScript : MonoBehaviour { public Camera Cor; public float blockSize; //ブロックの1辺の長さ。インスペクタから設定しておく void Update() { Ray ray = Cor.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(ray, out hitInfo)) { this.transform.position += hitInfo.normal * blockSize; } } } ```