1. 程式人生 > >unity 手遊 3D人物的移動控制

unity 手遊 3D人物的移動控制

[RequireComponent(typeof(CharacterController))]
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);

    
    }
}
可以控制3D人物的移動