LookAtMouse

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(Removing all content from page)
Line 1: Line 1:
[[Category: Two Dimensional]]
 
[[Category: MonoBehaviour]]
 
[[Category: Scripts]]
 
[[Category: Mouse]]
 
[[Category: JavaScript]]
 
Author: capnbishop
 
==Description==
 
This script will cause an object to rotate towards the mouse cursor along it's y axis.
 
  
This action could be good for third person games where objects need to point to the cursor but remain parallel with the ground.  For instance, a sentry gun located in the center of the screen that rotates toward the mouse to target oncoming enemies.
 
 
==Usage==
 
Drop this script onto a GameObject to have it look toward the cursor.  Change the speed value to alter how quickly the object rotates.
 
 
==JavaScript - LookAtMouse.js==
 
<javascript>
 
/******
 
 
LookAtMouse will cause an object to rotate toward the cursor, along the y axis.
 
 
To use, drop on an object that should always look toward the mouse cursor.
 
Change the speed value to alter how quickly the object rotates toward the mouse.
 
 
******/
 
 
// speed is the rate at which the object will rotate
 
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);
 
   
 
    // 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);
 
    }
 
}
 
</javascript>
 

Revision as of 18:49, 19 October 2009

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox