Я использую скрипт контроллера с официального сайта Unity для перемещения моего персонажа.Я также использую скрипт для поворота камеры с помощью мыши.Все работает нормально, пока персонаж не оглядывается и не поворачивается в другом направлении.Затем элементы управления WASD перемещают их в соответствии с исходной ориентацией.Например, если я поверну на 180 градусов, W переместит меня назад, а S переместит меня вперед.
Я пытался выяснить это, используя transform.forward, но я не знаю, что я делаю.
Сценарий движения:
CharacterController characterController;
public float speed = 6.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
void Start()
{
characterController = GetComponent<CharacterController>();
}
void Update()
{
if (characterController.isGrounded)
{
// We are grounded, so recalculate
// move direction directly from axes
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
moveDirection *= speed;
if (Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
}
}
// Apply gravity. Gravity is multiplied by deltaTime twice (once here, and once below
// when the moveDirection is multiplied by deltaTime). This is because gravity should be applied
// as an acceleration (ms^-2)
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
characterController.Move(moveDirection * Time.deltaTime);
}
Спасибо за любую помощь:)