- Home /
Make a Triangle instead of a "Rect"
Im (still) new and learning, so this is probably a stupid question.
Basically im able to make a rectangle on the screen like this:
Rect topLeft = new Rect(0, 0, Screen.width / 2, Screen.height / 2);
this will create a rectangle which I can use with touch input control.
So now I want some way to create a triangular touch region on the screen, sort of like this:
I havent found any "Triangle" "Shape" "Polygon", only Rect..
Thanks.
You don't have any primitives that'll let you draw that. Your solution is either:
1: draw those touch regions with a mesh, and check if you've touched it with raycasting. A very hacky way to do this is to just grab four quads, rotate them, and have them overlap to make the shapes you want.
2: Use the coordinates of the input touch to calculate which button that's been touched, and use that.
first check whether user touched inside rectangle of all buttons and then you can use Vector3.Angle to find angle from center of control buttons and use it to find which button is touched. for example if angle is b/w 45 to 135 it will be UP button.
Answer by Bunny83 · Dec 19, 2014 at 01:38 PM
You can simply create a polygon region either with:
Eric's implementation of PolyContainsPoint
Unity's PolygonCollider2D
Since the PolygonCollider2D is a component it need to be attached to a GameObject. You cah use the method OverlapPoint to test a point against the collider.
The ContainsPoint method shouldn't require much more explanation than what you'll find on the wiki page.
Your answer
![](https://koobas.hobune.stream/wayback/20220613174358im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
scrollrect jump to screen 0 Answers
Possible to return the names of gameobjects inside a rect? 1 Answer
rect.Contains problem? 2 Answers
Rect.Contains Screen Resolution Problem 3 Answers
Unity 4.6 UI Calculate combined bounds of transform and children 0 Answers