How to not execute certain line of code.
In my Update() method of my Player movement script, there is an if statement used to trigger further movement methods (it's a turn based, isometric 2D game). But I want my player to only rotate when you press the corresponding key, however, if you press it once more, it will do the actual movement. My problem is, that when I press the key, it will also give true value to the if statement whithin the if statement. I want to rotate the player when you press the direction key, if you press the same one again directly after, I want the player to move. Here's a piece of the script for reference. Thank you for answers
if (Input.GetKeyDown(KeyCode.D)) { transform.rotation = Quaternion.Euler(0, 0, 270);
if(Input.GetKeyDown(KeyCode.D)) { TryToMove(horizontal, vertical, out hit); }
}
Answer by pekalicious · Dec 04, 2015 at 06:02 AM
You'll probably need a flag, something like a switch, to let you know what to do the next time the key has been pressed. Something like:
if (Input.GetKeyDown(KeyCode.D))
{
if (shouldMove == false)
{
transform.rotation = Quaternion.Euler(0, 0, 270);
shouldMove = true; // set flag so that next key press goes to movement logic
}
else
{
TryToMove(horizontal, vertical, out hit);
shouldMove = false; // reset flag so that next key press goes to rotation logic
}
}
Your answer
Follow this Question
Related Questions
Get player to face the direction of movement 1 Answer
Rotating Two Axes for Gravity,Rotating only two axes towards Object 0 Answers
Click to Rotate towards raycast, then Move 1 Answer
Rotate object to joystick and position direction 0 Answers
How to make my sprite rotate to face the direction they are currently moving? (2D) 0 Answers