Raycastを使って、指定したオブジェクトへの当たり判定をつくってみましょう。
Cubeの右側にRayを出し、壁にぶつかると、コンソールに「Hit」が表示されます。
関連記事:
【Unity C#】向いている方向へRaycastを出す
【Unity C#】Raycastによる接地判定
【Unity C#】左右にRaycastの接触判定をつくる
Raycastを使って横方向の接触判定
Cubeと平面を作成します。
CubeのY座標を0.5にして、地面の上に配置します。
もう一つCubeを作り、名前をWallに変更。
サイズと位置を変更します。
ゲームビューではこのように配置されています。
CubeMove.csを作成し、Cubeに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float rayDistance; void Start() { rayDistance = 1.0f; } void Update() { //Raycastを右方向に出して可視化する Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.right); Debug.DrawRay(rayPosition, Vector3.right * rayDistance, Color.red); //Wallに衝突したときの処理 RaycastHit hit; if(Physics.Raycast(ray, out hit, rayDistance)) { if (hit.collider.name == "Wall") { Debug.Log("Hit"); } } //十字キー操作 if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, 0.01f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -0.01f); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.01f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.01f, 0f, 0f); } } } |
ゲームプレイして、シーンビューを確認してみましょう。
Rayが右方向に向かって、赤色で表示されています。
十字キーで右へ動かし、壁にぶつかりましょう。
コンソールに「Hit」も文字が表示されます。
所定のオブジェクトへの当たり判定は、Physics.Raycastを用います。
Physics.Raycast(Rayの開始位置、Rayの方向、衝突したオブジェクトの情報、Rayの長さ)
今回の例では、rayに、開始位置と方向を入れています。
衝突したオブジェクト(相手)の情報は、out hit。
Rayの長さはrayDistance、今回は1.0の長さになります。
関連記事:
【Unity C#】向いている方向へRaycastを出す
【Unity C#】Raycastによる接地判定
【Unity C#】左右にRaycastの接触判定をつくる