сделал по видео
имеется два скрипта
первый, его поместил на четыре объекта, на каждый объект закинул 3 оставшихся.
Код
public class checkpoint : MonoBehaviour {
public Transform[] toPoint;
public Transform getNext()
{
return toPoint[Random.Range(0, toPoint.Length)];
}
}
решил сделать поворот, в ту сторону куда нужно, но проблема в том, что персонаж поворачивается туда сюда, он доходит поворачивается, потом как бы возвращается в то положение в котором пришел и опять пытается повернутся
Код
public class controlPlayer : MonoBehaviour {
NavMeshAgent agent;
public Animator anim;
public Transform Checkpoint;
private Transform myTransform;
public Transform shtanga;
public Transform turnik;
public Transform myach;
public Transform grusha;
public float maxDistence = 0.3f;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
agent = GetComponent<NavMeshAgent> ();
Invoke ("move", 5f);
}
void move()
{
checkpoint point = Checkpoint.GetComponent<checkpoint> ();
Checkpoint = point.getNext ();
anim.SetBool ("idel", true);
agent.destination = Checkpoint.position;
Invoke ("move", 5f);
}
// Update is called once per frame
void Update () {
float distanceshtanga = Vector3.Distance (shtanga.transform.position, myTransform.position);
float distanceturnik = Vector3.Distance (turnik.transform.position, myTransform.position);
float distancesmyach = Vector3.Distance (myach.transform.position, myTransform.position);
float distancesgrusha= Vector3.Distance (grusha.transform.position, myTransform.position);
print (distanceshtanga);
if (distanceshtangafor < 1.0f) { // вот тут
myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (shtangafor.position - myTransform.position), rotationSpeed * Time.deltaTime);
anim.SetBool ("idel", false);
anim.SetBool ("for", true);
} else anim.SetBool ("bla", false);
if (distancesmyach < maxDistence) {
anim.SetBool ("idel", true);
}
if (distancesgrusha < maxDistence) {
anim.SetBool ("idel", true);
}
if (distanceturnik < maxDistence) {
anim.SetBool ("idel", true);
}
if (agent.velocity.magnitude > 0.5f) {
anim.SetBool ("idel", true); // сдесь понятно если расстояние больше то работает анимация хотьбы
}
else {
anim.SetBool ("idel", false); // сдесь она выключается когда подошел
}
}