Мой сценарий движения игрока иногда случайным образом отправляет игрока в, казалось бы, случайных направлениях.C#

Место общения программистов C#
Anonymous
Мой сценарий движения игрока иногда случайным образом отправляет игрока в, казалось бы, случайных направлениях.

Сообщение Anonymous »

Я новичок в Unity, и следующий код должен представлять собой сценарий перемещения игрока. Все работает как положено, пока время от времени, обычно при последовательном нажатии нескольких кнопок, плеер улетает.
Вот код:

Код: Выделить всё

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public float speed;
public float yRotation;
float jumpHeight = 5;
public Rigidbody rigidbody;

public CameraController cameraController;

// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
yRotation = cameraController.yRotation;
float yRotationRad = yRotation * Mathf.Deg2Rad;
Debug.Log(rigidbody.velocity);
Vector3 velocity = Vector3.zero;

if (Input.GetKey(KeyCode.W))
{
velocity += new Vector3(Mathf.Sin(yRotationRad) * speed, rigidbody.velocity.y, Mathf.Cos(yRotationRad) * speed);
}
if (Input.GetKey(KeyCode.A))
{
velocity += new Vector3(Mathf.Sin(yRotationRad-Mathf.PI/2) * speed, rigidbody.velocity.y, Mathf.Cos(yRotationRad - Mathf.PI / 2) * speed);
}
if (Input.GetKey(KeyCode.D))
{
velocity += new Vector3(Mathf.Sin(yRotationRad + Mathf.PI / 2) * speed, rigidbody.velocity.y, Mathf.Cos(yRotationRad + Mathf.PI / 2) * speed);
}
if (Input.GetKey(KeyCode.S))
{
velocity += new Vector3(Mathf.Sin(yRotationRad + Mathf.PI) * speed, rigidbody.velocity.y, Mathf.Cos(yRotationRad + Mathf.PI) * speed);
}

if(velocity!= Vector3.zero)
rigidbody.velocity = velocity;

if (Input.GetKey(KeyCode.Space) && rigidbody.velocity.y == 0) {
rigidbody.velocity = new Vector3(rigidbody.velocity.x,jumpHeight,rigidbody.velocity.z);
}
}
}
Я ожидал, что игрок будет двигаться, используя Wasd и пробел, что и происходит до тех пор, пока игрок не полетит. Если в коде есть какие-либо другие проблемы, не стесняйтесь указать и на них.

Подробнее здесь: https://stackoverflow.com/questions/787 ... m-directio

Вернуться в «C#»