2017-12-30 47 views
0

このトピックでは複数のスレッドを見てきましたが、現在のスクリプトではそれらの解決策はありませんでした。私は自分のカメラをセットアップして、マウスの右ボタンを押したままドラッグすると回転します。私のカメラはWASDキーで動きます。垂直カメラの回転を制限する

if(Input.GetMouseButtonDown(1)) 
    { 
     // Get mouse origin 
     mouseOrigin = Input.mousePosition; 
     isRotating = true; 
    } 

    if (isRotating) 
    { 
     Vector3 pos = cameraMain.ScreenToViewportPoint(Input.mousePosition - mouseOrigin); 

     transform.RotateAround(transform.position, transform.right, -pos.y * turnSpeed); 
     transform.RotateAround(transform.position, Vector3.up, pos.x * turnSpeed); 
    } 

これは、カメラが垂直に自由に回転することです。このコードがカメラに与える影響を変更せずに、この回転に制限を適用する方法を知りたいと思います。

答えて

0

私はカメラの動きコードをやり直しました。私はこれを実行しているので、マウスの右ボタンが押されているときだけこの関数を呼び出します。

public float speed = 10.0F; 
public float RotSpeed = 150.0F; 
public float minY = 0.0f; 
public float maxY = 90.0f; 
float forwardBackward; 
float leftRight; 
float RotLeftRight; 
float RotUpDown; 
Vector3 euler; 

public void CameraRotate() 
{ 
    transform.localEulerAngles = euler; 
    // Getting axes 
    RotLeftRight = Input.GetAxis("Mouse X") * RotSpeed * Time.deltaTime; 
    RotUpDown = Input.GetAxis("Mouse Y") * -RotSpeed * Time.deltaTime; 

    // Doing movements 
    euler.y += RotLeftRight; 

    euler.x += RotUpDown; 

    LimitRotation(); 
} 

public void LimitRotation() 
{ 
    if(euler.x >= maxY) 
     euler.x = maxY; 
    if(euler.x <= minY) 
     euler.x = minY; 
} 
0
if (isRotating) 
{ 
    Vector3 pos = cameraMain.ScreenToViewportPoint(Input.mousePosition - mouseOrigin); 

    pos.x = Mathf.Clamp (pos.x, 0, 90); 
    pos.y = Mathf.Clamp (pos.y, 0, 90); 

    transform.RotateAround("pass center object position", transform.right, -pos.y * turnSpeed); 
    transform.RotateAround("pass center object position", Vector3.up, pos.x * turnSpeed); 
} 
+0

これはカメラには影響しません。 –

+0

はカメラに添付されたこのスクリプトです。 –

+0

このスクリプトはカメラに接続されており、アクティブです。 Mathf.clampステートメントは何もしません。 –

関連する問題