using System; using System.Collections; using System.Collections.Generic; using Unity.Mathematics; using UnityEngine; public class NavPointFollower : MonoBehaviour { public NavPoint startNavPoint; public float rotationSpeed = 1f; public float speed = 1f; private Rigidbody _rigidbody; private void Start() { _rigidbody = GetComponent(); } // Update is called once per frame void Update() { var transform1 = transform; var position = transform1.position; _rigidbody.MovePosition(position + transform1.forward * (speed * Time.deltaTime)); var nextNavPointDirectionFlat = new Vector3(startNavPoint.transform.position.x, 0, startNavPoint.transform.position.z); var direction = (startNavPoint.transform.position - position).normalized; direction.y = 0; var lookRotation = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, Time.deltaTime * rotationSpeed); if (Vector3.Distance(transform.position, startNavPoint.transform.position) < 0.3f) { startNavPoint = startNavPoint.GetNext(); } } }