- Home /
Rotate point on XY plane to face object
I realize there are a million threads on this topic but I cannot figure this out.
I am working on the 2D XY plane with Z being depth. I want to rotate an object to face a point (both instantly and over time but let's focus on instantly). I have tried my own version and many online and all either fail catastrophically (spasming) or not rotating on the correct axis.
I want the rotation to act as though there are only 2 dimensions. Its a top down shooter like this and this. What do I need to do?
I've tried
Vector3 mouse_pos = Input.mousePosition;
mouse_pos.z = 30; //The distance between the camera and object
Vector3 object_pos = Camera.main.WorldToScreenPoint(gameObject.transform.position);
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
float angle = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
gameObject.transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle` - 90));
and
target = v;
float adj = (gameObject.transform.position.z - v.z);
float opp = (gameObject.transform.position.x - v.x);
float cot = Mathf.Atan(opp/adj) * Mathf.Rad2Deg;
cot *= -1;
if(v.z > gameObject.transform.position.z){
cot-=180;
}
gameObject.transform.Rotate (new Vector3(0,0,cot));
Your answer
Follow this Question
Related Questions
how to make a detect rotation script for negative rotation too 2 Answers
Rotate object respect other object rotation 0 Answers
How do I rotate an object when I press down a key and then it rotates back when I release the key 0 Answers
how to rotate a gameobject in a given direction and stop when it's done 1 Answer
Translate speed keeps changing 1 Answer