Прежде всего, использование Time.deltaTime в FixedUpdate дает неожиданные результаты.Используйте Time.fixedDeltaTime вместо него.Затем этот код будет делать то, что вы хотите.
private void Update()
{
if(Input.GetKeyDown(KeyCode.A)
{
transform.Rotate(new Vector3(0, 0, 90), Space.Self);
}
else if(Input.GetKeyDown(KeyCode.D)
{
transform.Rotate(new Vector3(0, 0, -90), Space.Self);
}
}
private void FixedUpdate()
{
rb.AddForce(transform.forward * forwardForce * Time.fixedDeltaTime);
}
, но если вы используете перемещение вашего объекта этим методом, при повороте он также продолжит перемещать предыдущую позицию.Может быть, вы можете исправить это следующим образом.
private void Update()
{
if(Input.GetKeyDown(KeyCode.A)
{
transform.Rotate(new Vector3(0, 0, 90), Space.Self);
rb.velocity = rb.velocity.magnitude*transform.forward;
}
else if(Input.GetKeyDown(KeyCode.D)
{
transform.Rotate(new Vector3(0, 0, -90), Space.Self);
rb.velocity = rb.velocity.magnitude*transform.forward;
}
}
private void FixedUpdate()
{
rb.AddForce(transform.forward * forwardForce * Time.fixedDeltaTime);
}