- Home /
Damping to Character Movement | Acceleration and Stopping?
Hey there everyone, so I have a twin stick shooter that works with a Xbox One controller. I have the movement just fine, but I would like to add damping so that the controls feel better and less tight. I saw this video - https://www.youtube.com/watch?v=vFsJIrm2btU, and it talks about damping at the 2:22 time stamp. The only thing is, that's for keyboard movement and my game relies on joystick input for movement. Can someone help me out with this please. I have my movement script below.
The movement is based off of the input from the left joystick on an controller. I want it to be so that the player speeds up the more they move until they reach a max speed. Then when they let go of the joystick, the player comes to a stop slowly, basically the damping. If you need more information please let me know. Thank you!
public float playerSpeed;
private Transform playerTransform;
private Rigidbody2D rb;
private Vector2 leftStickInput;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if (GameController.instance.gamePlaying)
{
GetPlayerInput(); //Move the player
}
else
{
leftStickInput = Vector2.zero; //Don't move the player\
}
}
private void GetPlayerInput() //Just get the input from the player
{
leftStickInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
}
private void FixedUpdate()
{
Vector2 curMovement = leftStickInput * playerSpeed * Time.deltaTime; //Move player
rb.MovePosition(rb.position + curMovement);
//THIS MAKES THE PLAYER ROTATE TOWARDS THE DIRECTION OF THE LEFT STICK
if (leftStickInput.magnitude > 0f)
{
Vector3 curRotation = Vector3.left * leftStickInput.x + Vector3.down * leftStickInput.y;
Quaternion playerRotation = Quaternion.LookRotation(curRotation, Vector3.forward);
rb.SetRotation(playerRotation);
}
}