2017-05-11 15 views
0

私はこの質問にオンラインでいくつかの寝台を見つけましたが、すべてを試しましたが、カメラを壊すか、全体的にうまく動作しません。ここでUnity 3D - カメラの回転を制限する

は私のスクリプトです:

using UnityEngine; 
using System.Collections; 

public class fp : MonoBehaviour 
{ 

public float speedH = 2.0f; 
public float speedV = 2.0f; 

private float yaw = 0.0f; 
private float pitch = 0.0f; 

void Update() 
{ 
    yaw += speedH * Input.GetAxis("Mouse X"); 
    pitch -= speedV * Input.GetAxis("Mouse Y"); 

    transform.eulerAngles = new Vector3(pitch, yaw, 0.0f); 
} 
} 

は、私の知る限りでは、この問題の3つの解決策はありますが、私は解決策のいずれかの

解決策1を実装する方法がわかりません。上のスクリプトをUnityscriptに変換してください(私はC#で少しのexpirienceを持っています)、if文で問題を解決できます。

解決方法2:90度の角度に私のスクリプトの角度を制限するために、C#のコードを提供するすべての軸

解決策3:上記

+0

c#でif文を実行する方法がわからない場合は、まず基本を学ぶことに焦点を当てて、1日か2日与えるようにしてください。 – Lestat

答えて

1

のすべては、あなたがたもの投稿しませんこれは暗闇の中であなたを助けているショットです。 Unity's Mathf.Clampをチェックして許容角度を制限してください。

yaw += speedH * Input.GetAxis("Mouse X"); 
pitch -= speedV * Input.GetAxis("Mouse Y"); 

yaw = Mathf.Clamp(yaw, -90f, 90f); 
pitch = Mathf.Clamp(pitch, -60f, 90f); 

transform.eulerAngles = new Vector3(pitch, yaw, 0.0f); 
+0

迅速な対応をありがとう!私はそれが簡単だったことを知っていた、私はちょうどそれを行う方法を知らなかった... – Athdot

+0

親ゲームオブジェクトが回転するとあなたのスクリプトは動作しません... – Athdot

+0

"My script"ゲームオブジェクトが変更されるかどうかは指定していません。カメラの回転を制限する方法を尋ねました。それに答えてマークを付け、新しい質問をしてください。 –

1

コード内の軸を制限する試みはありません。一時変数を使用して軸を0から255まで変更してください。最小値または最大値に達する場合は、Mathf.Clampを最小値と最大値/角度の間でクランプします。

Modified this通常のy軸の制限ではなく、両方の軸でFPSカメラを制限します。

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

//Y limit 
public float yMaxLimit = 45.0f; 
public float yMinLimit = -45.0f; 
float yRotCounter = 0.0f; 

//X limit 
public float xMaxLimit = 45.0f; 
public float xMinLimit = -45.0f; 
float xRotCounter = 0.0f; 

Transform player; 

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

// Update is called once per frame 
void Update() 
{ 
    //Get X value and limit it 
    xRotCounter += Input.GetAxis("Mouse X") * xMoveThreshold * Time.deltaTime; 
    xRotCounter = Mathf.Clamp(xRotCounter, xMinLimit, xMaxLimit); 

    //Get Y value and limit it 
    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

このスクリプトは私のゲームでは役に立たなかった – Athdot

+0

ロケット科学ではありません。あなたはあなたのカメラにそれを添付することになっています。 – Programmer

+0

私はそれをしました。スクリプトは何もしなかった – Athdot

0

カメラがマウスの動きによって制御されるように、1人目のキャラクタコントローラのカメラの回転を制限しようとしていますか?

関連する問題