- Home /
Only register click if not clicking a button
I am making a level editor for my 2d game. I am using Camera.main.ScreenToWorldPoint(Input.mousePosition);
to get the position of the mouse to determine where to put objects.
This works fine, but when I click on a button to choose another tile or to pause the game it creates a tile behind the button. Is there any way I can check for a button at the cursor position before placing the tile? Or should I be getting the mouse position differently?
Answer by Retrogue1 · Jul 26, 2017 at 07:05 PM
I ended up making a GameObject that has Collider2Ds (set to trigger) that go over the buttons, and I check to see is the mouse position is in one of those. This is the best way I can think of, but if anyone knows of an easier way that I missed, please let me know.
Here is the code:
At the top:
public GameObject ignore; //GameObject that has Collider2Ds showing where to ignore clicks
private Vector3 mousePos;
In Update():
if (Input.GetAxisRaw("Fire1") == 1f)
{
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos = new Vector3(mousePos.x, mousePos.y); //sets mousePos.z to 0
if (ignore != null)
{
foreach (Collider2D c in ignore.GetComponents<Collider2D>())
{
if (c.bounds.Contains(mousePos))
return;
}
}
//do stuff with mousePos here
}
Your answer
Follow this Question
Related Questions
Unity 2D level editor performance 1 Answer
I need to move a sprite when an UI button is clicked 1 Answer
How to Create simple 2D game??? 1 Answer
Moving Player Left/Right with Buttons 2 Answers