![alt text][1]
[1]: /storage/temp/20455-untitled-1.png
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);
↧