2017-02-21 9 views
0

新しいゲームを開始していますが、今プレイヤーは360 *を見ることができますが、プレーヤーが空からどれだけ遠くに(上下に)見上げるかを制限したいと思います。 は、ここに私のコードあなたがこれを行うにはMathf.Clampを使用する必要がFPSカメラのy軸を特定の角度に制限します

Vector2 mouseLook; 
Vector2 smoothV; 

public float sensitivity = 5.0f; 
public float smoothing = 2.0f; 

GameObject player; 

void Start() { 
    player = this.transform.parent.gameObject; 
} 

// Update is called once per frame 
void Update() { 
    var md = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); 

    md = Vector2.Scale(md, new Vector2(sensitivity * smoothing, sensitivity * smoothing)); 
    smoothV.x = Mathf.Lerp(smoothV.x, md.x, 1f/smoothing); 
    smoothV.y = Mathf.Lerp(smoothV.y, md.y, 1f/smoothing); 
    mouseLook += smoothV; 

    transform.localRotation = Quaternion.AngleAxis(-mouseLook.y, Vector3.right); 
    player.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, player.transform.up); 
} 

}

+0

プレーヤー変数はカメラですか? – Programmer

+0

ええ、Player変数はカメラ – Johnny

答えて

2

です。以下は、カメラを上下左右に回転させるために使用するものです。 yMaxLimityMinLimit変数を、制限する角度に変更することができます。 x方向に移動するときに制限はありません。

public float xMoveThreshold = 1000.0f; 
public float yMoveThreshold = 1000.0f; 

public float yMaxLimit = 45.0f; 
public float yMinLimit = -45.0f; 


float yRotCounter = 0.0f; 
float xRotCounter = 0.0f; 

Transform player; 

void Start() 
{ 
    player = Camera.main.transform; 
} 

// Update is called once per frame 
void Update() 
{ 
    xRotCounter += Input.GetAxis("Mouse X") * xMoveThreshold * Time.deltaTime; 
    yRotCounter += Input.GetAxis("Mouse Y") * yMoveThreshold * Time.deltaTime; 
    yRotCounter = Mathf.Clamp(yRotCounter, yMinLimit, yMaxLimit); 
    //xRotCounter = xRotCounter % 360;//Optional 
    player.localEulerAngles = new Vector3(-yRotCounter, xRotCounter, 0); 
} 
+0

ありがとうPogrammerありがとうございますが、今は問題があります。私のコードでは、カメラがポイントしているところにキャラクターを移動させることができましたが、私が 'w'を押し続けてカメラを動かすと、プレーヤーはカメラの方向に動かないでしょう。たとえば、カメラを左に動かすと左には移動しません。 – Johnny

+0

この解決策はあなたの見た目/動かない問題。動いている問題について新しい質問を作成してください。私はそれを見ていきます。あなたの移動コードも投稿してください。 – Programmer

+0

ちょうど、私は他の問題の新しい質問を作成しました – Johnny

関連する問題