Я пытаюсь повернуть моего персонажа в положение мыши, работает только относительно Transform: (0,0,0) - PullRequest
0 голосов
/ 03 ноября 2018

Поворот персонажа, происходит только тогда, когда мышь вращается вокруг мирового центра (0,0,0) -

MoveToMouse() работает отлично, нажимайте на точку в мире, и игрок перемещается, и камера следует.

Но, удерживая клавишу shift, чтобы повернуть символ туда, куда указывает мышь, он указывает только относительно мирового центра.

transform.LookAt - работает отлично, но я хочу иметь возможность сгладить вращение.

using UnityEngine;
using UnityEngine.AI;


public class ClickToMove : MonoBehaviour
{
     NavMeshAgent player;
     public float rotSpeed = 10f;

     void Start()
     {
         player = GetComponent<NavMeshAgent>();
     }

     void Update()
     {
         MoveToMouse();
         LookAtMouse();
     }

     void MoveToMouse()
     {
         if (Input.GetMouseButtonDown(1))
         {
             RaycastHit hit;

             if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
             {
                 player.destination = hit.point;
             }
         }
     }

     void LookAtMouse()
     {
         if (Input.GetKey(KeyCode.LeftShift))
         {
             RaycastHit lookHit;

             Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out lookHit, 100);

            //transform.LookAt - works perfectly, but want to be able to smooth the rotation.
            //transform.LookAt(lookHit.point);

             transform.rotation = Quaternion.Slerp(transform.rotation, 
             Quaternion.LookRotation(lookHit.point), rotSpeed * Time.deltaTime);
         }
     }
}

1 Ответ

0 голосов
/ 03 ноября 2018

Quaternion.LookRotation принимает направленный вектор как параметр, а не позицию.

...