Я хочу иметь скрипт, который, когда я щелкаю в моей сцене, мой игрок будет вращаться, и к нему будет добавлена сила, и он будет перемещаться, пока не достигнет точки щелчка в моей сцене.
Прямо сейчас он работает с использованием векторов и перемещает игрока из одной точки в другую. Но я хочу исправить это, чтобы я мог использовать физику и лучше понимать, как движется мой игрок. Например, пусть он ускорится, чтобы начать движение, и замедлится, когда он достигнет моей цели.
Мой сценарий теперь выглядит так
public GameObject isActive;
public float speed;
public Ray ray;
public Rigidbody rigidBody;
public Vector3 targetPoint;
// Use this for initialization
void Start ()
{
targetPoint = transform.position;
}
// Update is called once per frame
void Update ()
{
}
void FixedUpdate()
{
if (Input.GetMouseButton(0))
{
targetPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
ChangeRotationTarget ();
}
Quaternion targetRotation = Quaternion.LookRotation (targetPoint - transform.position);
transform.rotation = Quaternion.Slerp (transform.rotation, targetRotation, speed * Time.deltaTime);
rigidbody.position = Vector3.Lerp(transform.position, targetPoint, speed * Time.fixedDeltaTime);
}
void ChangeRotationTarget ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Plane playerPlane = new Plane (Vector3.up, transform.position);
float hitdist = 0.0f;
if (playerPlane.Raycast (ray, out hitdist))
{
targetPoint = ray.GetPoint (hitdist);
}
}
Однако, когда я запускаю это, он просто скользит из одной точки в другую. Независимо от силы сопротивления или массы, которую я вложил в свое твердое тело.
Может ли кто-нибудь помочь мне внести изменения? Или укажи мне в правильном направлении