Unity3D 机器人控制2
嘿嘿,这个我还不太熟悉,只是大概懂。以后自己写个更好的和大家分享哈。
#pragma strictpublic var Speed : float = 5.0;public var jumpSpeed : float = 500.0;public var jumpDirection : Vector3 = Vector3.zero;public var MoveDirection : Vector3 = Vector3.zero;public var isGrounded : boolean = false;public var Jumping : boolean = false;public var inAir : boolean = false;public var airControl : float = 0.5;public var jumpClimax : boolean = false;public var isRunning : boolean = false;private var contact : ContactPoint;function Movement () {if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))isRunning = true;elseisRunning = false;if (Input.GetAxis("Horizontal") || Input.GetAxis("Vertical")) {MoveDirection = Vector3(Input.GetAxisRaw("Horizontal"), MoveDirection.y,Input.GetAxisRaw("Vertical"));}this.transform.Translate((MoveDirection.normalized * Speed) * Time.deltaTime);if (Input.GetButtonDown("Jump") && isGrounded) {Jumping = true;jumpDirection = MoveDirection;rigidbody.AddForce((transform.up) * jumpSpeed);isGrounded = false;}if (isGrounded) this.transform.Translate((MoveDirection.normalized * Speed) * Time.deltaTime);else if (Jumping || inAir) this.transform.Translate((jumpDirection * Speed * airControl) * Time.deltaTime);} function Start () {}function FixedUpdate () {if (!isGrounded) {if (Physics.Raycast(transform.position, -transform.up, ((collider as CapsuleCollider).height/2 + 2))) {isGrounded = true;Jumping = false;inAir = false;jumpClimax = false;}else if (!inAir) {inAir = true;jumpDirection = MoveDirection;}}else if (inAir && (rigidbody.velocity.y == 0.0)) {jumpClimax = true;}transform.Rotate(Vector3(0, Input.GetAxis("Mouse X"), 0) * Time.deltaTime * 250.0);Movement();}function OnCollisionStay(collisionInfo : Collision) {contact = collisionInfo.contacts[0];if (inAir || Jumping)rigidbody.AddForceAtPosition(-rigidbody.velocity, contact.point);}function OnCollisionExit(collisionInfo : Collision) {isGrounded = false;}