- Home /
Question by
SimplyMabu · Apr 06, 2018 at 12:08 AM ·
2dmovementgetaxisrunningdouble-tap
Maintaining Run on direction change (double tap using GetAxis)
So I have some code that is used to detect when a button is double tapped and makes the player run
//senses if a button is pressed twice fast enough to let the player run
if (hzH == 2)
{
//and resets the counter for button presses
pressedTime = 0;
hzH = 0;
//This is used to sense if a button was pressed twice in a way that moves you on the X Axis
if (doubleTapRun == true)
running = true;
}
if (hzH == 1)
{
//starts the countdown on the first press
pressedTime += Time.deltaTime;
//Debug.Log ("why tho??");
}
if (Input.GetAxis ("Horizontal") != 0)
{
if (Input.GetAxis ("Horizontal") != 0 && hzH < 2)
{
//senses X Axis movement
hzSwitch = true;
doubleTapRun = true;
}
}
else if (hzSwitch && pressedTime <= 0.5f)
{
//confirms single tap
if (hzH == 0) {
running = false;
doubleTapRun = false;
hzH = 1;
hzSwitch = false;
}
else if (hzH == 1)
{
//confirms double tap
hzH = 2;
hzSwitch = false;
}
}
if (hzH == 1 && pressedTime >= 0.5f)
{
//confirms that second tap didnt happen in time
pressedTime = 0;
hzH = 0;
}
//makes it so running cannot be true if not on the ground
if (ground == false)
running = false;
then later in the code you get this
GetComponent<Rigidbody2D> ().velocity = new Vector2 (move * maxS, GetComponent<Rigidbody2D> ().velocity.y);
if (running == true)
GetComponent<Rigidbody2D> ().velocity = new Vector2 (move * dashS, GetComponent<Rigidbody2D> ().velocity.y);
with dashS being the running speed
but upon implementing it this way, I realized that it didn't 100% the way I wanted, because I also want it to, if the player is running right, and then goes left, to continue to run, only to stop running if they go from going right or left to going neither, but I'm not sure if I can make that work with the current code, or if I'd have to rework my idea of how to make the running work altogether and I'm drawing a blank Any ideas?
Comment