Mercurial > hg > Game > Games
diff Chapter5/Assets/SimpleCloudSystem by RM/SceneComponents/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js @ 2:fdab88fc2cb9
add game projects
author | Yuta ANSE <e135745@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:14:45 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Chapter5/Assets/SimpleCloudSystem by RM/SceneComponents/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js Fri Jul 17 23:14:45 2015 +0900 @@ -0,0 +1,37 @@ +private var motor : CharacterMotor; + +// Use this for initialization +function Awake () { + motor = GetComponent(CharacterMotor); +} + +// Update is called once per frame +function Update () { + // Get the input vector from kayboard or analog stick + var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); + + if (directionVector != Vector3.zero) { + // Get the length of the directon vector and then normalize it + // Dividing by the length is cheaper than normalizing when we already have the length anyway + var directionLength = directionVector.magnitude; + directionVector = directionVector / directionLength; + + // Make sure the length is no bigger than 1 + directionLength = Mathf.Min(1, directionLength); + + // Make the input vector more sensitive towards the extremes and less sensitive in the middle + // This makes it easier to control slow speeds when using analog sticks + directionLength = directionLength * directionLength; + + // Multiply the normalized direction vector by the modified length + directionVector = directionVector * directionLength; + } + + // Apply the direction to the CharacterMotor + motor.inputMoveDirection = transform.rotation * directionVector; + motor.inputJump = Input.GetButton("Jump"); +} + +// Require a character controller to be attached to the same game object +@script RequireComponent (CharacterMotor) +@script AddComponentMenu ("Character/FPS Input Controller")