Персонаж Unity3D смотрит в направлении движения - PullRequest
0 голосов
/ 10 мая 2018

Я делаю игру, она содержит планетарную гравитацию, как бы я мог заставить игрока смотреть в направлении, в котором он движется, было бы полезно, если бы я мог вставить ее в свой код движения

using UnityEngine;

public class PlayerMovementScript : MonoBehaviour {

public float moveSpeed;

private Vector3 moveDirection;

void Update()
{
    moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
}

void FixedUpdate()
{
    GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + transform.TransformDirection(moveDirection) * moveSpeed * Time.deltaTime);
}
}

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете смотреть в направлении движения, используя скорость твердого тела.

transform.rotation = Quaternion.LookRotation(rb.velocity);

Если вы хотите сглаженный переход:

Quaternion desiredRotation = Quaternion.LookRotation(rb.velocity);
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, Time.deltaTime);
0 голосов
/ 10 мая 2018

Предполагая, что этот скрипт прикреплен к объекту, который вы хотите, чтобы он указывал в направлении его движения, попробуйте это.

void Update()
{
    moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
    Vector3 lookDirection = moveDirection + gameObject.Transform.Position;
    gameObject.Transform.LookAt(lookDirection);
}

Поскольку ваше moveDirection нормализовано, вы должны добавить его к текущей позиции, чтобы получить moveDirection в локальном пространстве объекта. Тогда вы можете LookAt() указать на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...