- Home /
Question by
solly576 · Sep 15, 2013 at 09:10 AM ·
rotationshooterthird person controllermouse look
Third-person Mouse Look Script?
I am in the process of making a third-person shooter game. I have used this script to make the character look at the mouse:
var playerPlane = new Plane(Vector3.up, transform.position);
// Generate a ray from the cursor position
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);
}
However, when the character moves, I want it to be always facing the mouse point. FOR EXAMPLE, when the character walks in the opposite direction to what he is facing, he will walk backwards.
Is there any way to modify Unity's existing Third Person Controller script to achieve this, or, if not, how would I script it? I already have the animations for walking backwards/to the side sorted (but I would need to integrate these!).
Comment