Как в Unity заставить объект двигаться строго вперед относительно себя же?
Вот мой код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
private void Update()
{
if (Input.GetKey(KeyCode.W))
{
transform.Translate(transform.up * 4f * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
transform.Translate(transform.up * -4f * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
transform.Rotate(0, 0, 0.075f);
}
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(0, 0, -0.075f);
}
}
}
Ответы (1 шт):
Автор решения: KingPeas
→ Ссылка
Не очень понятно, вы в системе координат 2D приложение делаете? Судя по коду так и вид сверху. У метода Translate есть переопределенный метод, где вы можете указать в какой системе координат надо рассчитывать движение.
public void Translate(Vector3 translation, Space relativeTo = Space.Self);
По идее у вас должно работать в координатах объекта. Если двигается не туда, возможно скрипт висит не на том объекте и двигаете вы не тот трансформ. Ну либо меняйте вектор на forward
, left
.
Еще на поворотах тоже лучше добавить привязку к deltaTime
, чтобы на тормознутых машинах повороты дерганными не выглядели.