- Home /
Make touch buttons stop working after finger slides off.
Hey everyone, sorry for the weird title but I don't know how to word this without it sounding confusing. Basically I have a left and right arrow on my screen that move the player when physically held on the phone (touch controls). My problem is that when you click and hold the right arrow button, the player walks right (like they should) but will keep walking even if you drag your finger off of that button. I don't mean that once you release the button he keeps walking, cause he doesn't. I mean that if you press and hold the button and slide your finger to anywhere else on the screen (while never taking your finger off the screen) he keeps walking. How do I make it that if the player slides there finger off of the button, the function stops playing? Here is my code for the Right Arrow.
Player Script:
if (Input.GetKey(KeyCode.RightArrow))
{
rb2d.velocity = new Vector2(maxSpeed, rb2d.velocity.y);
transform.localScale = new Vector3(1, 1, 1);
}
if (moveright)
{
rb2d.velocity = new Vector2(maxSpeed, rb2d.velocity.y);
transform.localScale = new Vector3(1, 1, 1);
}
Touch Script:
public void RightArrow()
{
player.moveright = true;
player.moveleft = false;
}
public void ReleaseRightArrow()
{
player.moveright = false;
}
Here is what Unity and Even Triggers look like. Sorry my Right Arrow image is hard to see, I have the Opacity down but it is located on the bottom right of the Scene / Game View.
Thanks everyone! :)
Answer by · Jul 28, 2017 at 08:25 PM
Use OnPointerExit.
https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.OnPointerExit.html
Okay cool, how exactly would I use it. would i put it in my Touch Script like:
public void OnPointerExit(EventSystem.PointerEventData eventData);
Because that says EventSystem namespace could not be found. I even added "using UnityEngine.EventSystems;" to the top of my Script thinking it would identify it. Or would i put "RightArrow" in there somewhere?
Inside Unity in the Event Trigger component click on "Add New Event Type", choose Pointer Exit, then make the same thing as you did with Pointer Up
You got it! Sorry for the noob question, I really appreciate the help!
Your answer
Follow this Question
Related Questions
How to make basic touch screen controls 1 Answer
Touch controls for Pong based video games for Android 0 Answers
Problem in multi touch 0 Answers
move object x axis with finger touch 0 Answers
Player can jump on non ground items 1 Answer