# fixed rotation around object

What Im trying to do is this, I have a spotlight that rotates around the Player according to where the mouse is. The top down rotation works with my code I have below, and mimics the Top down Picture example I provided. However here’s my problem, The code I have that works only gives me the bottom left Side view heights of the Player and Sportlight, so their equal. If i try to move them up or down and face the light down or up like I have in the bottom right 2 side view pictures, it wont rotate around correctly. Im really puzzled on what I should do to fix this. Keep in mind Im trying to have the light direction always face away from the player. Thanks!!

public void lightMouseMovement()
{
float distToLight;
float distToLookAt;
Plane playerPlane;
float rayDist = 0f;

//Distance from Player to Light Object
distToLight = (player.transform.position - this.transform.position).magnitude;
//Distance from Player to Light Look At Object
distToLookAt = (player.transform.position - lookAtObject.transform.position).magnitude;
playerPlane = new Plane(Vector3.up, player.transform.position);

//Creates ray from Screen to Point
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

//Sets rayDist to distance from Camera to movementPlane OR cancels out(parallel or opposite direction)

if (playerPlane.Raycast(ray, out rayDist))
{
//Get Collision Point in world space
Vector3 point = ray.GetPoint(rayDist);
//Move to new Rotational Posistion
this.transform.position = player.transform.position + (point - player.transform.position).normalized * distToLight;

}
if (playerPlane.Raycast(ray, out rayDist))
{
//Get Collision Point in world space
Vector3 point = ray.GetPoint(rayDist);
//Move to new Rotational Posistion
lookAtObject.transform.position = player.transform.position + (point - player.transform.position).normalized * distToLookAt;

}
//Make Height Adjustment to new point
this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y + lightYAdj, this.transform.position.z);
lookAtObject.transform.position = new Vector3(lookAtObject.transform.position.x, lookAtObject.transform.position.y + lookAtYAdj, lookAtObject.transform.position.z);
//Turn Light to Look at Look At Object
this.transform.LookAt (lookAtObject.transform.position);

if i get it correctly you move your spotlight around and then make it look at an object whose position you calculate, if you want it to constatly face away the player you simply set it to a point on the spotlight-player line something like this:

lookAtObject.position = (spotlight.position-player.position) + spotlight.position