- Home /
How to smooth out character Roll in a Top-down 2D movement
I'm doing a Top Down view like a Dungeon crawler and types like that, and I have my character moving around, attacking etc... But my dodge is a teleport, I can't seem to make it smooth out movement and still being affected by walls properly.
// Inspector Variables
[SerializeField] private float playerSpeed;
[SerializeField] private float rollDistance;
[SerializeField] private float rollSpeed;
[SerializeField] private int dodgeIF;
// Dodge Roll variables
private Vector3 rollDir;
private float distanceMoved;
private float currentIF;
private Vector3 rollEndPoint;
private void HandleDodgeRoll()
{
if (Input.GetButtonDown("Fire2"))
{
Debug.Log("Rolled");
rollDir = GetMovementInputs().normalized;
rollEndPoint = transform.position + (rollDir * rollDistance);
distanceMoved = 0;
currentIF = 0;
state = PlayerState.DodgeRoll;
}
}
private void Roll()
{
if (distanceMoved < rollDistance)
{
distanceMoved = Mathf.Lerp(0, rollDistance, 1f);
transform.position = Vector3.Lerp(transform.position, rollEndPoint, 1f);
}
else
{
state = PlayerState.Normal;
}
if (currentIF < dodgeIF)
{
Invulnurable = true;
currentIF++;
}
}
For starter's I know my problem is on the Lerp that I use to move my character, though I don't know how to smooth out the movement using it. Any other way to move the character during the roll?
It's a bit of a weird solution for a combat roll, but it's what I came up with... Any help to make it better is welcome of course!
In the Update function, Roll() is being called im sure of it but here
void Update()
{
switch (state)
{
case PlayerState.Normal:
CalculateVelocity();
HandleDodgeRoll();
break;
case PlayerState.DodgeRoll:
Roll();
break;
}
}
Your answer
Follow this Question
Related Questions
How do i make a cube move (Continuosly without stopping) when i press a button once in unity 2D 2 Answers
How To Make a Snake-like Movement without Food ? [UNITY 2D] 1 Answer
How to make a object move right automatically in 2d. 2 Answers
How to call OnCollisionEnter2D once when hitting multiple objects? 1 Answer