Raycastによる当たり判定を、左右に表示させてみましょう。
当たり判定を利用して、左右のオブジェクトを削除します。
右のRaycastに触れるとと右側のオブジェクトが、左のRaycastに触れると左側のオブジェクトが消えます。
関連記事:
向いている方向へRaycastを出す
Raycastによる特定オブジェクトの接触判定
Raycastによる接地判定
斜めに向けたRaycastで衝突判定
オブジェクトに触れていれば動く
ジャンプで壁に触れると引っ付く
Rayの始点をマイナスにする
Rayを当てた状態でキーを押せば削除
Rayの照射が外れれば向きを変える
左右にRaycastを出して、当たり判定を作成
Cubeと平面を作成します。
CubeのY座標を0.5にして地上に出し、リジッドボディを追加します。
続いて、SphereとCylinderを作成し、地上に出します。
わかりやすくするために、それぞれのオブジェクトに色をつけます。
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 50 51 52 53 54 55 56 57 58 59 |
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 ray1 = new Ray(rayPosition, Vector3.right); Ray ray2 = new Ray(rayPosition, Vector3.left); Debug.DrawRay(rayPosition, Vector3.right * rayDistance, Color.red); Debug.DrawRay(rayPosition, Vector3.left * rayDistance, Color.red); //オブジェクトに衝突したときの処理 RaycastHit hit; if(Physics.Raycast(ray1, out hit, rayDistance)) { if (hit.collider.name == "Sphere") { Destroy(hit.collider.gameObject); } } if(Physics.Raycast(ray2, out hit, rayDistance)) { if (hit.collider.name == "Cylinder") { Destroy(hit.collider.gameObject); } } //十字キー操作 if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.1f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.1f, 0f, 0f); } if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, 0.1f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -0.1f); } } } |
ゲームプレイして、十字キーで操作しましょう。
Cubeの左右に、Raycastが赤線で表示されているのがわかります。
右側のRaycastがぶつかれば、Sphereを削除できます。
左側のRaycastでは、Cylinderを削除することができます。
関連記事:
向いている方向へRaycastを出す
Raycastによる特定オブジェクトの接触判定
Raycastによる接地判定
斜めに向けたRaycastで衝突判定
オブジェクトに触れていれば動く
ジャンプで壁に触れると引っ付く
Rayの始点をマイナスにする
Rayを当てた状態でキーを押せば削除
Rayの照射が外れれば向きを変える