- Home /
Diagonal movement causing player to run (counting as a second tap for double tap running)
currently I have a double tap system enabled for running however when I move diagonally it's counting the key press as a tap and I don't want that... I have tried a few things but to no avail...
So if I double tap any 4 directions works fine and can run diagonally, but if I'm walking then move diagonally for whatever reason it then goes into it's running state.
if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.UpArrow))
{
// double tap running
if (buttonrefresh >= 0 && buttontap == 1)
{
mv_Model.speed = 9;
}
else
{
buttonrefresh = 0.5;
buttontap += 1;
}
}
else if (Input.anyKey == false)
{
// if a button hasn't been pressed reset the tap count
if (buttonrefresh > 0)
{
buttonrefresh -= 1 * Time.deltaTime;
}
else
{
mv_Model.speed = oldspeed;
buttontap = 0;
}
}
Debug.Log(buttonrefresh);
// don't allow diagonal taps
if (isMoving == true)
{
buttonrefresh -= 1 * Time.deltaTime;
}
if (can_move)
{
if (Input.GetKey(KeyCode.DownArrow))
{
newDir.y = -1;
isMoving = true;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
newDir.x = -1;
isMoving = true;
}
if (Input.GetKey(KeyCode.RightArrow))
{
newDir.x = 1;
isMoving = true;
}
if (Input.GetKey(KeyCode.UpArrow))
{
newDir.y = 1;
isMoving = true;
}
} else {
mv_Model.speed = oldspeed;
buttontap = 0;
}
Any help is appreciated.
Edit: Solved by giving each direction dedicated variables.
// double tap dash
// down
if (Input.GetKeyDown(KeyCode.DownArrow))
{
// double tap running
if (buttonrefreshd >= 0 && buttontapd == 1)
{
mv_Model.speed = 9;
}
else
{
buttonrefreshd = 0.5;
buttontapd += 1;
}
}
else if (Input.anyKey == false)
{
// if a button hasn't been pressed reset the tap count
if (buttonrefreshd > 0)
{
buttonrefreshd -= 1 * Time.deltaTime;
}
else
{
mv_Model.speed = oldspeed;
buttontapd = 0;
}
}
// left
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
// double tap running
if (buttonrefreshl >= 0 && buttontapl == 1)
{
mv_Model.speed = 9;
}
else
{
buttonrefreshl = 0.5;
buttontapl += 1;
}
}
else if (Input.anyKey == false)
{
// if a button hasn't been pressed reset the tap count
if (buttonrefreshl > 0)
{
buttonrefreshl -= 1 * Time.deltaTime;
}
else
{
mv_Model.speed = oldspeed;
buttontapl = 0;
isRunning = false;
}
}
// right
if (Input.GetKeyDown(KeyCode.RightArrow))
{
// double tap running
if (buttonrefreshr >= 0 && buttontapr == 1)
{
mv_Model.speed = 9;
}
else
{
buttonrefreshr = 0.5;
buttontapr += 1;
}
}
else if (Input.anyKey == false)
{
// if a button hasn't been pressed reset the tap count
if (buttonrefreshr > 0)
{
buttonrefreshr -= 1 * Time.deltaTime;
}
else
{
mv_Model.speed = oldspeed;
buttontapr = 0;
isRunning = false;
}
}
// up
if (Input.GetKeyDown(KeyCode.UpArrow))
{
// double tap running
if (buttonrefreshu >= 0 && buttontapu == 1)
{
mv_Model.speed = 9;
}
else
{
buttonrefreshu = 0.5;
buttontapu += 1;
}
}
else if (Input.anyKey == false)
{
// if a button hasn't been pressed reset the tap count
if (buttonrefreshu > 0)
{
buttonrefreshu -= 1 * Time.deltaTime;
}
else
{
mv_Model.speed = oldspeed;
buttontapu = 0;
isRunning = false;
}
}
// don't allow diagonal taps
if (isMoving == true)
{
buttonrefreshd -= 1 * Time.deltaTime;
buttonrefreshl -= 1 * Time.deltaTime;
buttonrefreshr -= 1 * Time.deltaTime;
buttonrefreshu -= 1 * Time.deltaTime;
}
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612114536im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Keep tapping button to do certain action 0 Answers
Unwanted multiple Taps 1 Answer
How do I make a double-tap system for dashing 7 Answers