SomeoneLul
SomeoneLul

Reputation: 11

Mobile, How to check what is being touched?

I am currently trying to do a clicker game in Unity and I have following situation:

I have multiple buttons on the screen. Currently (like in pretty much every clicker game) you press the screen and that´s it. Problem is that if someone clicks on the button it also runs the logic that should only be performed if the "regular" screen is being pressed.

Currently I am using:

if (Input.GetMouseButtonDown(0))

but I need to know how I can "filter out" when buttons are being touched.

Upvotes: 1

Views: 42

Answers (2)

Dima Tschernobai
Dima Tschernobai

Reputation: 21

You can have a touch condition, which is not fulfilled if you press in a certain area defined by the Camera with ScreenToWorldPoint. I use touches and check if there are touches on the screen. If they are below a y-coordinate in the world, than the condition is not fulfilled and there you can have your buttons:

    public void Update(){
            TouchInput();
        }
        public void TouchInput(){

        if(touch.tapCount == 1 && TouchCondition(touch))
                {
        /*Here you put your function which is used when no buttons are pressed. In my 
         example 
         the Game starts. */
                    StartGame();
                }

        }
        public bool TouchCondition(Touch touch)
            {
    /*You put your Condition into this if statement below.
 In my example, if the touch is higher than the 2 y-coordinate,
 than the condition is fulfilled and you start the game.
 Otherwise it is not fulfilled and you can have all the buttons below 2y-coordinate */
                if (Camera.main.ScreenToWorldPoint(touch.position).y >= 2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

Upvotes: 2

vasmos
vasmos

Reputation: 2586

you can check the input point if its in a valid firing region (outside of buttons) by making a rectangle, checking if the point is in it, and only firing event if it is. Try Rect.Contains.

https://docs.unity3d.com/ScriptReference/Rect.Contains.html

Upvotes: 1

Related Questions