(Unity)ランダムな動きをする敵の作成(直進、境界線まで来たらゆっくり旋回してまた直進)

(サンプルコード)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BotTurnSlow : MonoBehaviour
{
    private float moveSpeed = 3f;
    private float rotateSpeed = 0.1f; // 旋回速度 (小さいほどゆっくり)
    //public float rotationAngleLimit = 90f; // 旋回する最大角度 (左右に何度まで向きを変えるか)

    private bool isRotating = false; // 旋回中かどうか
    private Quaternion targetRotation; // 目標とする回転

    void Update()
    {
        if (!isRotating)
        {
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        }
    }

    // 境界線に触れたときの処理
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Wall") && !isRotating)
        {
            StartCoroutine(RotateRandomly());
        }
    }

    IEnumerator RotateRandomly()
    {
        isRotating = true; // 旋回開始フラグを立てる

        // ランダムな旋回角度の決定
        float randomAngle = Random.Range(135, 225);

        // 現在の向きから指定された角度だけY軸周りに回転させる目標の回転を計算
        targetRotation = transform.rotation * Quaternion.Euler(0, randomAngle, 0);

        // ゆっくりと目標の回転まで補間する
        float t = 0;
        while (t < 1)
        {
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, t);
            t += Time.deltaTime * rotateSpeed; // rotateSpeed が小さいほどゆっくり
            yield return null; // 次のフレームまで待つ
        }

        isRotating = false; // 旋回終了フラグを下ろす
    }
}