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