(サンプルコード)
using UnityEngine;
public class AIDriver : MonoBehaviour
{
public Transform[] waypoints;
public float speed;
public float turnSpeed;
public float goalDistance;
private int num = 0;
private void Update()
{
if (waypoints.Length == 0)
{
return;
}
Transform target = waypoints[num];
// 方向の計算
Vector3 direction = (target.position - transform.position).normalized;
// 向きをゆっくり回転
Quaternion targetRotation = Quaternion.LookRotation(direction);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, turnSpeed * Time.deltaTime);
// 前進
transform.position += transform.forward * speed * Time.deltaTime;
// Waypointに近づいたら次へ
float distance = Vector3.Distance(transform.position, target.position);
if (distance < goalDistance)
{
num = (num + 1) % waypoints.Length;
}
}
}