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")