
Small solo projects and things I try on my own
public class PlayerMovement : MonoBehaviour
{
[Header("Movement values")]
[SerializeField][Range(500f, 5500f)]
float _thrustForce;
[SerializeField][Range(50f, 250f)]
float _pitchForce;
[SerializeField][Range(25f, 125f)]
float _rollForce;
Rigidbody _rigidBody;
float _thrustAmount;
float _pitchAmount, _rollAmount;
private void Awake()
{
_rigidBody = GetComponent<Rigidbody>();
}
private void Update()
{
_thrustForce = Mathf.Clamp(_thrustForce, 500f, 5500f);
_rollForce = Mathf.Clamp(_rollForce, 25f, 125f);
_pitchForce = Mathf.Clamp(_pitchForce, 50f, 250f);
_pitchAmount += Input.GetKeyDown(KeyCode.W) ? 1 :
Input.GetKeyUp(KeyCode.W) ? -1 : 0;
_pitchAmount += Input.GetKeyDown(KeyCode.S) ? -1 :
Input.GetKeyUp(KeyCode.S) ? 1 : 0;
_rollAmount += Input.GetKeyDown(KeyCode.A) ? 1 :
Input.GetKeyUp(KeyCode.A) ? -1 : 0;
_rollAmount += Input.GetKeyDown(KeyCode.D) ? -1 :
Input.GetKeyUp(KeyCode.D) ? 1 : 0;
//scroll for speed controls
float scrollInput = Input.GetAxis("Mouse ScrollWheel");
if (scrollInput > 0)
{
_thrustForce += 200;
_rollForce += 4;
_pitchForce += 8;
}
else if (scrollInput < 0)
{
_thrustForce += -200;
_rollForce += -4;
_pitchForce += -8;
}
}
private void FixedUpdate()
{
//You're a SpaceShip, you will ALWAYS be moving forward ! ! !
_rigidBody.AddForce(transform.forward * (_thrustForce * Time.fixedDeltaTime));
if (!Mathf.Approximately(0f, _pitchAmount))
{
_rigidBody.AddTorque(transform.right * (_pitchForce * _pitchAmount * Time.fixedDeltaTime));
}
if (!Mathf.Approximately(0f, _rollAmount))
{
_rigidBody.AddTorque(transform.forward * (_rollForce * _rollAmount* Time.fixedDeltaTime));
}
}
}```