Revision as of 15:52, 12 July 2008

Author: pete

Description

This is a modified version of the C# MouseLook script in the Standard Assets. It's been converted to Javascript and using Keys to adjust the Look direction has been added. You will want to modify it for use - ie using a Key to look up while using the Mouse to look down at the same time will cause some problems. Deleting the KeyLook functions (and their invokes in Update) and taking the transforms out of the if statements will leave you with a JS version of MouseLook.

<javascript>
/// This is a modified javascript conversion of the Standard Assets MouseLook script.
/// Also added is functionallity of using a key to look up, down, left and right in addition to the Mouse.
/// Everything is on by default. You will want to turn off/on stuff depending on what you're doing.

/// You can also modify the script to use the KeyLook functions to control an object's rotation.
/// Try using MouseXandY on an object. Actually it works as is but you'll want to clean it up ;)

/// As of this version the key and mouse fight if used at the same time (ie up key and down mouse jitters).

/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add a rigid body to the capsule
/// - Add the MouseLookPlus script to the capsule.
/// -> Set the script's Axis to MouseX in the inspector. (You want to only turn character but not tilt it)
/// - Add FPSWalker script to the capsule

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add the MouseLookPlus script to the camera.
/// -> Set the script's Axis to MouseY in the inspector. (You want the camera to tilt up and down like a head. The character already turns.)

/// - Name an Input element LookUp and assign positive and negative keys to look up and down by key
/// - Name an Input element LookAround and assign positive and negative keys to look left and right by key

//Most likely you wouldn't do this here unless you're controlling an object's rotation.
//Call our look left and right function.
KeyLookAround();

//Call our look up and down function.
KeyLookUp();

//If the user isn't pressing a key to look up, transform our X angle to the mouse.
if (!Input.GetAxis("LookAround"))
{
//If you don't want to allow a key to affect X, keep this line but take it out of the if
transform.localRotation = Quaternion.AxisAngle (Vector3.up, Mathf.Deg2Rad * rotationX);
}

//If the user isn't pressing a key to look up, transform our Y angle to the mouse.
if (!Input.GetAxis("LookUp"))
{
//Multiply the Quaterion so we don't loose our X we just transformed
//If you don't want to allow a key to affect Y, keep this line but take it out of the if
transform.localRotation *= Quaternion.AxisAngle (Vector3.left, Mathf.Deg2Rad * rotationY);
}
}

// if you're doing a standard X on object Y on camera control, you'll probably want to
// delete the key control in MouseX. Also, take the transform out of the if statement.
//Call our look left and right function.
KeyLookAround();

//Call our look up and down function.
KeyLookUp();

//If the user isn't pressing a key to look up, transform our X angle to the mouse.
if (!Input.GetAxis("LookAround"))
{
//If you don't want to allow a key to affect X, keep this line but take it out of the if
transform.localRotation = Quaternion.AxisAngle (Vector3.up, Mathf.Deg2Rad * rotationX);
}

//If the user isn't pressing a key to look up, transform our Y angle to the mouse
if (!Input.GetAxis("LookUp"))
{
//If you don't want to allow a key to affect Y, keep this line but take it out of the if
transform.localRotation = Quaternion.AxisAngle (Vector3.left, Mathf.Deg2Rad * rotationY);
}

}
}

function KeyLookAround ()
{
// If you're not using it, you can delete this whole function.
// Just be sure to delete where it's called in Update.