The question is answered, right answer was accepted
UI buttons activate movement functions for one time only
Hi everyone. I'm working on a little 2D game for mobile in which the player sprite only moves right and left. It is working great with this script (C# script):
if (Input.GetKey (KeyCode.RightArrow))
{
MoveRight ();
}
if (Input.GetKey (KeyCode.LeftArrow))
{
MoveLeft ();
}
The player keeps moving right when I'm holding the right arrow on the keyboard and stops moving when i release it, and that's exactly what i need. But when i added UI buttons and linked them to my moveRight() and moveLeft() functions on the playerController script, it works but i have to keep clicking to make the player move. (by linking, i mean the OnClick script attached to UI buttons, and the Event Trigger Component... no one of them is working for me) How can i make buttons work like the keyboard input method ??
Answer by Nischo · Feb 22, 2017 at 11:41 AM
Thats because a Button click is pressing and releasing in one. To achieve what you want try the EventTrigger OnPointerDown
and OnPointerUp
events.
Thank you for your answer! yes even with event trigger pointerDown and UP it wasn't working. Today I just found why, it was the linear drag
I increased in the player object (it was helpful with stopping infinite movement with keyboard controls). But I'm not satisfied yet with the results especially when the game is running on the device, my player object responds poorly to the UI buttons. If you have an idea to improve the efficiency of the UI buttons don't hesitate to help me out and thank you again.
Follow this Question
Related Questions
How can i detect a collision with many Terrains?, since my collider is not working? 0 Answers
C sharp script, to open a Unity standalone .exe file on a network drive 0 Answers
Several objects, same script, different values with no duplications 1 Answer
What is the best way to script a trigger that moves a object from point a to point b in C# (unity 5) 1 Answer
Have object fly towards camera 0 Answers