1. 程式人生 > >unity中控制主角的移動和旋轉

unity中控制主角的移動和旋轉

void Update () {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        rigBody.MovePosition(this.transform.position+new Vector3(h,0,v)*Speed*Time.deltaTime);
       if(Input.GetAxis("Horizontal")!=0|| Input.GetAxis("Vertical")!=0)
        {
            Rotating(h,v);
        }
}
    void Rotating(float horizontal, float vertical)
    {
        // 建立角色目標方向的向量
        Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
        // 建立目標旋轉值 並假設Y軸正方向為"上"方向
        Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up); //函式引數解釋: LookRotation(目標方向為"前方向", 定義宣告"上方向")
        // 建立新旋轉值 並根據轉向速度平滑轉至目標旋轉值
        //函式引數解釋: Lerp(角色剛體當前旋轉值, 目標旋轉值, 根據旋轉速度平滑轉向)
        Quaternion newRotation = Quaternion.Lerp(rigBody.rotation, targetRotation, Speed * Time.deltaTime);
        // 更新剛體旋轉值為 新旋轉值
        rigBody.MoveRotation(newRotation);
    }