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));


        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){
		gameObject.transform.Rotate (new Vector3(0,0,cot));

Try this !