Итак, я делаю игру FPS в Unity, и я использовал transform.translate для движения, но это позволяет игроку перемещаться через стены, если он движется достаточно быстро (диагональное движение), и даже не имеет значения, насколько велик хитбокс стены. является.
Вот мой код контроллера проигрывателя:
Вот код движения:
void FixedUpdate()
{
myBody.MovePosition(transform.position + (transform.forward *
Time.deltaTime * speed));
}
void Update()
{
float axisX = Input.GetAxis ("Horizontal");
float axisY = Input.GetAxis ("Vertical");
Дополнительная информация: с помощью этого кода игрок теперь перемещается в очень определенных направлениях, независимо от вращения. Кроме того, W и S перемещаются вверх и вниз, а не вперед и назад. Также не обращайте внимания на // перед линией движения Rigidbody, я удалил ее.