采用绝对移动增量的更复杂移动函数。
尝试通过 motion
移动控制器,此运动将仅受碰撞约束。它将沿着碰撞体滑动。CollisionFlags 汇总了此 Move 期间发生的碰撞。该函数未施加任何重力。
using UnityEngine; using System.Collections;
// The GameObject is made to bounce using the space key. // Also the GameOject can be moved forward/backward and left/right. // Add a Quad to the scene so this GameObject can collider with a floor.
public class ExampleScript : MonoBehaviour { public float speed = 6.0f; public float jumpSpeed = 8.0f; public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero; private CharacterController controller;
void Start() { controller = GetComponent<CharacterController>();
// let the gameObject fall down gameObject.transform.position = new Vector3(0, 5, 0); }
void Update() { if (controller.isGrounded) { // We are grounded, so recalculate // move direction directly from axes
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); moveDirection = moveDirection * speed;
if (Input.GetButton("Jump")) { moveDirection.y = jumpSpeed; } }
// Apply gravity moveDirection.y = moveDirection.y - (gravity * Time.deltaTime);
// Move the controller controller.Move(moveDirection * Time.deltaTime); } }