- Home /
UI Button and character actions
I'm making an endless runner using 2D Toolkit for sprites and also for UI. I have my main character that checks in Update() for a Input.GetKeyDown(KeyCode.Mouse0), if that happens, it triggers the Jump() function.
The issue appears when I added UI elements. When I press a button, the button triggers an action but also the main character jumps. I tried to put a bool on the button action, something like "buttonPressed = true", and inform the main character script. Then, in Update() I check for Input.GetKeyDown(KeyCode.Mouse0) && buttonPressed == false. But this doesn't work because apparently the button action and the character jump are triggered at the same time. So, how can I do to avoid character jumping when Im pressing a button?
Answer by ShabihDesperado · Mar 26, 2015 at 11:58 AM
You can try to modify Script Execution Order in Project Settings or just add a collider that follow your camera, use OnMouseDownfunction to call jump, raycast will do the rest of the job.
the flag buttonPressed with the right Script execution order worked! Not closing the answer in case there's a most efficient way of doing this!
Create a object child of the main camera and add this script.
public class $$anonymous$$ouseDetection: $$anonymous$$onobehaviour
{
void On$$anonymous$$ouseDown()
{
Player.Jump();
}
}
Add a collider, set it like trigger and make it so big like your screen. This collider will call your jump function every time you click on your screen. When you click on a UI Element this will block the raycast (if is not tell us what UI system are you using) and won't jump. Trust me
Your answer
Follow this Question
Related Questions
How to spawn an 2D sprite with a button 1 Answer
Unity 4.6's button Bug? 1 Answer
Unity UI button does not detect click 2 Answers
Why are my UI elements hidden behind the background? 3 Answers