2016-04-14 8 views
2

私はキャラクターが平らな面に掛けられて歩いていくことができる最初の人物のゲームに取り組んでいます(ムーンブーツのようなもの)。私がカメラで問題を抱えているのは、私が見つけたマウスの見た目のほとんどが、プレイヤーが世界中でまっすぐに向き合っていることに依存しているからです。私の「フリッピング」アニメーション(プレイヤーが新しいサーフェス)が終了すると、カメラは即座に、世界が定義したように上下にまっすぐに戻ってきます。私はアニメーションの後に回転をリセットしないように、マウスルックを実装する方法が必要です。標準的な方法を回避しながら、私のマウスは回転を見て実行する任意のプレイヤーオリエンテーションのUnity Mouselook

transform.Rotate(-Input.getAxis("Mouse Y") turnSpeed Time.deltaTime, Input.getAxis("Mouse X") turnSpeed Time.deltaTime, 0); 

順ではなく、水平方向にカメラを回したときに、私はいくつかの奇妙な回転を得るため、これは明らかに間違っています:私は現在使用しています。プレーヤーの向きに関係なく正しく動作するように、マウスルックを実装するより良い方法はありますか?

答えて

0

あなたはプレイヤーTransformの内側にカメラをplanceし、プレイヤーにこのスクリプトを追加することができます。

public class MouseLook : MonoBehaviour { 

    [SerializeField] 
    Camera Camera; 

    [Range(10f,50f)] 
    public float Speed = 30; 

    void Update() { 
     transform.rotation = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * speed * Time.deltaTime, transform.rotation * Vector3.up)*transform.rotation; 
     Camera.transform.rotation = Quaternion.AngleAxis(-Input.GetAxis("Mouse Y") * Speed * Time.deltaTime, Camera.transform.rotation * Vector3.right)* Camera.transform.rotation; 
    } 
} 

あなたはインスペクタでカメラへの参照を追加します。カメラの+/- 90度を超えて回転しないようにチェックして、余分に回転しないようにする必要があります。あなたがそれで問題を抱えるなら、私はあなたを助けるでしょう。