Я пытаюсь заставить камеру от первого лица и движение камеры и плеера работать именно так, как мне нужно, однако моя проблема сейчас в том, что если я смотрю направо с камерой и нажимаю W, чтобы двигаться вперед, она движется впередв соответствии с игровым миром, а не с направлением, в котором смотрит камера.
Я пытался изменить родительские функции или использовать преобразование, чтобы связать игрока и камеру вместе.
// Simple Player movement
Rigidbody rb;
public float speed;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float mH = Input.GetAxis("Horizontal");
float mV = Input.GetAxis("Vertical");
rb.velocity = new Vector3(mH * speed, rb.velocity.y, mV * speed);
}
// Camera controls (separate script)
private Transform playerBody;
void update()
{
CameraRotation();
}
private void CameraRotation()
{
float mouseX = Input.GetAxis(mouseXInputName) * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis(mouseYInputName) * mouseSensitivity * Time.deltaTime;
xAxisClamp += mouseY;
if (xAxisClamp > 90.0f)
{
xAxisClamp = 90.0f;
mouseY = 0.0f;
ClampAxisRotationToValue(270.0f);
}
else if (xAxisClamp < -90.0f)
{
xAxisClamp = -90.0f;
mouseY = 0.0f;
ClampAxisRotationToValue(90.0f);
}
transform.Rotate(Vector3.left * mouseY);
playerBody.Rotate(Vector3.up * mouseX);
}
С последней строкой playerBody.rotate
Я ожидал, что он повернет объект, к которому прикреплена камера, поэтому при нажатии вперед он будет двигаться вперед в направлении, куда смотрит камера, но это не так.все еще движется в своих статических X и Z, игнорируя направление камеры.