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点間の往復運動をくり返す
オブジェクトの往復運動をつくる
ぶつかると逆方向に向きを変えて進む
 
	   
         
         
           
         
           
        