Toggle between positions
I am making a 2D game where an object goes up, down or in the middle. I want to toggle between going down, middle or up on left click but it is not working. So basically what is meant to be happening is that - when you press left mouse button on the screen the object should move up (say 20 pixels from the 'starting point') then when you press left mouse button again it should move down (say 20 pixels from the 'starting point') and then when press left mouse button again it should move back to the starting point and this should keep looping. However, using my current code nothing happens. When I tried using separate inputs it worked just fine. Sorry for the high amount of code.
Vector2 Pos;
public bool DownKeyPressed = false;
public bool UpKeyPressed = false;
public bool MiddleKeyPressed = false;
bool onMiddle = true;
bool onUp = false;
bool onDown = false;
void Update()
{
Pos = transform.position;
Toggle();
transform.position = Pos;
print(Pos.y);
}
void GoDown()
{
if (Pos.y >= 1.2f)
{
Pos = Vector2.Lerp(Pos, new Vector2(Pos.x, Pos.y - 1.2f), 0.1f);
}
else
{
DownKeyPressed = false;
}
}
void GoUp()
{
if (Pos.y <= 2.8f)
{
Pos = Vector2.Lerp(Pos, new Vector2(Pos.x, Pos.y + 1.2f), 0.1f);
}
else
{
UpKeyPressed = false;
}
}
void GoMiddle()
{
float epsilon = 0.1f;
if ((Pos.y >= 2 - epsilon && Pos.y <= 2) || (Pos.y <= 2 + epsilon && Pos.y >= 2))
{
Pos.y = 2;
MiddleKeyPressed = false;
}
else if (Pos.y >= 2)
Pos = Vector2.Lerp(Pos, new Vector2(Pos.x, Pos.y - 1.2f), epsilon);
else if (Pos.y < 2)
Pos = Vector2.Lerp(Pos, new Vector2(Pos.x, Pos.y + 1.2f), epsilon);
}
My toggle method or function -:
public void Toggle() {
if (onMiddle)
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
UpKeyPressed = true;
}
}
if (UpKeyPressed)
{
GoUp();
onMiddle = false;
onUp = true;
}
if (onUp)
{
if (Input.GetKeyDown(KeyCode.Mouse0) )
{
DownKeyPressed = true;
}
}
if (DownKeyPressed)
{
GoDown();
onUp = false;
onDown = true;
}
if (onDown)
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
MiddleKeyPressed = true;
}
}
if (MiddleKeyPressed)
{
GoMiddle();
onDown = false;
onMiddle = true;
}
}
Your answer
Follow this Question
Related Questions
How can I get the player to face the direction it is going in a Unity 2D Game? 0 Answers
Unity 2D Build Error 0 Answers
How to change animator states when a key is held through a C# script for a sprite? 0 Answers
Activating multiple images under one canvas via multiple objects 0 Answers
How do I Detect if an object has made a full rotation and gradually change its color 1 Answer