Rayで地面のオブジェクトを検知しながら進み、Rayの照射が外れれば、向きを変えるしくみをつくりましょう。
今回の例では、Cubeが前方に向かって自動で移動。
下へRayを出して進んでいますが、Planeへの照射が外れと、逆方向に向きを変えます。
関連記事:
向いている方向へRaycastを出す
Raycastによる接地判定
左右にRaycastの接触判定をつくる
Raycastによる特定オブジェクトの接触判定
キャラクターを行ったり来たりさせる
2点間の往復運動をくり返す
オブジェクトの往復運動をつくる
ぶつかると逆方向に向きを変えて進む
Rayが当たらなければ逆方向へ回転
PlaneとCubeを作成し、Planeを少し下に下げておきます。
ゲームビューではこのように見えています。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float rayDistance = 1.0f; private float speed = 3.0f; void FixedUpdate() { transform.Translate(new Vector3(0, 0, speed*Time.deltaTime)); Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.down); Debug.DrawRay(rayPosition, Vector3.down * rayDistance, Color.red); RaycastHit hit; if(!Physics.Raycast(ray, out hit, rayDistance)) { transform.Rotate(new Vector3(0, 180, 0)); } } } |
ゲームプレイして、動きを確認しましょう。
シーンビューで真横から確認すると、このように見えています。
下方向に向けて長さ1でRayを出します。
Rayに当たっていなければ、180度回転して、逆方向に進みます。
関連記事:
向いている方向へRaycastを出す
Raycastによる接地判定
左右にRaycastの接触判定をつくる
Raycastによる特定オブジェクトの接触判定
キャラクターを行ったり来たりさせる
2点間の往復運動をくり返す
オブジェクトの往復運動をつくる
ぶつかると逆方向に向きを変えて進む