- Home /
Rotate 3rd person Character according to mouse position
Hello , I am new in unity engine .. So, here is how the game should work: The character is running automatically in one direction, with an increasing speed over time , but he has to rotate and change his direction according to mouse position , but the camera following him should not rotate and continue following him in one direction.
What I did : I attached the camera to the character and then attached the following script to the character , but the camera rotates
var camera = GameObject;
var speed = 4.0;
function Update () {
// Generate a plane that intersects the transform's position with an upwards normal.
var playerPlane = new Plane(Vector3.up, transform.position);
// Generate a ray from the cursor position
//var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
// Determine the point where the cursor ray intersects the plane.
// This will be the point that the object must look towards to be looking at the mouse.
// Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
// then find the point along that ray that meets that distance. This will be the point
// to look at.
var hitdist = 0.0;
// If the ray is parallel to the plane, Raycast will return false.
if (playerPlane.Raycast (ray, hitdist)) {
// Get the point along the ray that hits the calculated distance.
var targetPoint = ray.GetPoint(hitdist);
// Determine the target rotation. This is the rotation if the transform looks at the target point.
var targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
// Smoothly rotate towards the target point.
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
}
the character also has the following scripts attached:
Third Peron Controller
Third Person Camera
Thank you.
Comment