Как зажать камеру в Unity3D? - PullRequest
0 голосов
/ 26 апреля 2019

Я пробовал это, но каждый раз, когда я нажимал на дисплей, камера запускалась с этой точки.
Так что я не знаю, что делать сейчас

Я пытался сделать некоторые сзажим, но он идет не так

if(Input.GetTouch(0).phase == TouchPhase.Began ) 
{
    firstpoint = Input.GetTouch(0).position;
    ???xAngTemp = Mathf.Clamp(xAngle, 10, 10);
    ???yAngTemp = Mathf.Clamp (yAngle, 10, 10);
    xAngTemp = xAngle;
    yAngTemp = yAngle;
}

if(Input.GetTouch(0).phase==TouchPhase.Moved) 
{
    secondpoint = Input.GetTouch(0).position;
    ???xAngTemp = Mathf.Clamp(xAngle, 10, 10);
    ???yAngTemp = Mathf.Clamp (yAngle, 10, 10);

    //Mainly, about rotate camera. For example, for Screen.width rotate on 180 degree
    xAngle = xAngTemp + (secondpoint.x - firstpoint.x) * 30 * XSensitivity / Screen.width;
    yAngle = yAngTemp - (secondpoint.y - firstpoint.y) * 15 * YSensitivity / Screen.height;

    //Rotate camera
    this.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я тупой Чтобы исправить горизонтальное вращение просто следует удалить yClamp))) большое спасибо Итак, rotX = Mathf.Clamp (rotX, -90f, 90f); на самом деле работает Я просто тупой, я сделал это без - оператор первый)

0 голосов
/ 26 апреля 2019

сначала скорость Переменная называется RotSpeed:

float RotSpeed = 1; 

, затем измените свою функцию обновления следующим образом:

rotX += Input.touches[0].deltaPosition.x * RotSpeed;
rotY += Input.touches[0].deltaPosition.y * RotSpeed;
rotX = Mathf.Clamp(rotX, -90f, 90f);
rotY = Mathf.Clamp(rotY, -90f, 90f);
Camera.main.transform.Rotate(Vector3.up, rotX * 5, Space.Self);
Camera.main.transform.Rotate(Vector3.left, rotY * 5, Space.Self);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...