- Home /
2D get touch position relative to object
How can I get the touch position on a specific 2D gameObject/sprite?
Searching these forums I've managed to record when I get a touch on an object using either a rayCast or the OnMouseDown method, but I want to retrieve the position on the object that was touched.
I've got these methods in a script attached to the gameObject in question and there will be not other gameObjects that I'm worried about clicking.
e.g
If I have a circle and I touch the left hand side of it, I want to move it right. If I touched it on the right hand side I want to move it left. I know how to apply force when it is touched, but I can't work out what coordinates I clicked my object
(left and right were simple examples, in reality I would move it in any direction (e.g diagonals as well)
Thanks
Answer by TommyB · Feb 06, 2014 at 11:56 PM
I actually managed to do this using the code below. To be clear the issue I Was having was getting the clickPos in relation to the gameObject. I'd worked out how to add the force. Unfortunately I couldn't answer my own question until it was approved!
In case anyone else needs it, this is the code i used to get the click position relative to the gameObject
if (Input.GetMouseButton (0)) {
Vector3 clickedPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (clickedPosition, -Vector2.up);
if (hit) {
Vector3 hitPoint = this.transform.InverseTransformPoint (hit.point);
}
}
Answer by Maui-M · Feb 06, 2014 at 10:12 PM
Here is the logic, you'll need to post code to get more detailed information for your situation.
Get position of the game object, Vector2 objPos Get position of your click, Vector2 clickPos
Get the force to apply to the game object
Vector2 force = new Vector2(objPos.x - clickPos.x, objPos.y - clickPos.y);
Your answer
Follow this Question
Related Questions
Lag Caused by Overlapping 2D Colliders 1 Answer
Model stuck on collider 1 Answer
2d Object Increases in Speed with Each Collision 0 Answers
Why Does Object Keep Getting Faster? 1 Answer
2D pixel collision & destruction 1 Answer