2016-05-07 7 views
4

ich in der Lage möge Kameradrehung nach einem bestimmten Punkt zu beschränken und nur in der Lage sein, in einem bestimmten Bereich zu drehen, das ist der Code so weit ...Grenze Kamera Drehwinkel

void Update() { 
    float mouseX = Input.GetAxis("Mouse X"); 
    float mouseY = -Input.GetAxis("Mouse Y"); 

    rotY += mouseX * mouseSensitivity * Time.deltaTime; 
    rotX += mouseY * mouseSensitivity * Time.deltaTime; 

    desiredy = Camera.main.transform.eulerAngles.y; 
    desiredx = Camera.main.transform.eulerAngles.x; 

    if (!(desiredy < maxy && desiredy > miny)) 
    { 
     //i dont know what to put in here, i have tried everything 
    } 


    else if (!(desiredx < maxx && desiredx > minx)) 
    { 
     //i dont know what to put in here, i have tried everything 
    } 

    else 
    { 
     localRotation = Quaternion.Euler(rotX, rotY, 0.0f); 
     transform.rotation = localRotation; 
    } 
} 

Antwort

3

du machen kompliziert mit Ihrer unnötigen Logik. Alles, was Sie brauchen, ist die Mathf.Clamp-Funktion, die sicherstellt, dass Ihr Wert innerhalb des angegebenen Bereichs liegt.

void Update() 
{ 
    rotateCamera(); 
} 


public float xSensitivity = 100.0f; 
public float ySensitivity = 100.0f; 

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

public float xMinLimit = -360.0f; 
public float xMaxLimit = 360.0f; 

float yRot = 0.0f; 
float xRot = 0.0f; 

void rotateCamera() 
{ 
    xRot += Input.GetAxis("Mouse X") * xSensitivity * Time.deltaTime; 
    yRot += Input.GetAxis("Mouse Y") * ySensitivity * Time.deltaTime; 
    yRot = Mathf.Clamp(yRot, yMinLimit, yMaxLimit); 
    Camera.main.transform.localEulerAngles = new Vector3(-yRot, xRot, 0); 

} 
+0

wierd Ich habe versucht, dass vor nicht funktioniert hat jetzt seine Arbeits ... btw dank –

+0

@ onion123 Wahrscheinlich, weil Sie wurden mit 'transform.rotation' statt' transform.localEulerAngles' – Programmer