Переместить персонажа в сфере - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу переместить символ вокруг сферы в позиции щелчка, у меня есть этот код для щелчка в точке, и персонаж перемещается в эту позицию, движение в порядке, но метод lookAt не работает хорошо.

Vector3 targetPosition;
Vector3 lookAtTarget;
Quaternion playerRot;
public float rotSpeed = 20;
public float speed = 10;
public bool move = false;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        SetTargetPosition();
    }

    if (move)
    {
        Move();
    }
}

void SetTargetPosition()
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if(Physics.Raycast(ray, out hit, 1000))
    {
        targetPosition = hit.point;
        //this.transform.LookAt(targetPosition);
        lookAtTarget = new Vector3(targetPosition.x - transform.position.x, targetPosition.y, targetPosition.z - transform.position.z);
        playerRot = Quaternion.LookRotation(lookAtTarget);

        move = true;
    }
}

void Move()
{
    transform.rotation = Quaternion.Slerp(transform.rotation, playerRot, rotSpeed * Time.deltaTime);

    transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);

    if(transform.position == targetPosition)
    {
        move = false;
    }
}

1 Ответ

0 голосов
/ 20 апреля 2020

Это происходит потому, что вы используете Vector3.MoveTowards. Эта функция перемещает игровой объект в его прямой вектор. Разделите ваш игровой объект на две части. сделай Mesh Renderer одним, потомком другого. Присвойте сценарий MoveToward родительскому элементу, а LookAt часть - дочернему.

...