unity 手遊 3D人物的移動控制
阿新 • • 發佈:2019-01-02
[RequireComponent(typeof(CharacterController))]
可以控制3D人物的移動public class MoveTest : MonoBehaviour { private Rigidbody myRigidbody; private CharacterController myCharacterController; private Vector3 moveDirection = Vector3.zero; public float my_重力 = 20f; public float my_速度 = 5f; public float my_跳躍速度 = 10f; //人物的各種狀態,包括可超控,不可操作,不能移動,不能攻擊,死亡等 public UnitStateEnum my_狀態 = UnitStateEnum.free; // Use this for initialization void Start () { //定義CharacterController元件 myCharacterController = transform.GetComponent<CharacterController>(); //設定人物不可穿透 myCharacterController.isTrigger = false; } void Update () { } void FixedUpdate() { //當人物在地面上時候,並且可控制狀態 if (myCharacterController.isGrounded&&( my_狀態== UnitStateEnum.free|| my_狀態 == UnitStateEnum.slow)) { //移動方向等於Input的橫軸和縱軸位移,Y(上下方向不變) moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); //讓人物面朝著你需要移動的方向 transform.LookAt(transform.position+ moveDirection); //定義速度 moveDirection *= my_速度; //跳躍,如果獲取到了跳躍鍵,則Y軸跳躍 if (Input.GetButton("Jump")) moveDirection.y = my_跳躍速度; } //附加重力因素,Y的方向一直在向下受重力影響 moveDirection.y -= my_重力 * Time.deltaTime; //向控制的方向移動 myCharacterController.Move(moveDirection * Time.deltaTime); } }