So right now i have a spotlight looking at an object. Both the spotlight and the point its looking at rotate around the player to follow the mouse in a fixed rotation. everything works perfectly with the rotation however the problem im facing is that i cant make the light look up or down while its rotating. it seems to always either zero out so it just looks straight or it skews the whole rotation. Here is what I have now, any help would be awesome!!! Thanks in advance.
ALSO: This height adjustment is going to be set to be constant at any state. Later I might have it so it possibly changes, but I'm picturing it to be relatively static from start in the adjustment.
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);
}
↧