У меня есть скрипт, настроенный таким образом, чтобы при касании / перетаскивании правой стороны экрана мобильного устройства камера двигалась. Это работает отлично, за исключением того, что камера дрожит (весь код находится в LateUpdate ()). Есть ли лучший способ сделать это, что будет более гладким? Для полноты изображения это камера от третьего лица.
for (int i = 0; i < Input.touchCount; i++)
{
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
Vector3 p = Input.GetTouch(i).position;
Debug.Log(p);
if (p.x < Screen.width / 3 * 1)
{
//touched on the left
//do other code
Debug.Log("Touch Left");
}
else
{
//touched on the right
//do other code
Debug.Log("Right Touch");
firstpoint = Input.GetTouch(i).position;
xAngTemp = xAngle;
yAngTemp = yAngle;
}
}
if (Input.GetTouch(i).phase == TouchPhase.Moved)
{
Vector3 p = Input.GetTouch(i).position;
Debug.Log(p);
if (p.x < Screen.width / 3 * 1)
{
//touched on the left
//do other code
Debug.Log("Move Left");
}
else
{
//touched on the right
//do other code
Debug.Log("Move Right");
secondpoint = Input.GetTouch(i).position;
//Mainly, about rotate camera. For example, for Screen.width rotate on 180 degree
xAngle = xAngTemp + (secondpoint.x - firstpoint.x) * 180.0f / Screen.width;
yAngle = yAngTemp - (secondpoint.y - firstpoint.y) * 90.0f / Screen.height;
yAngle = Mathf.Clamp(yAngle, -50, 50);
//Rotate camera
transform.LookAt(Target);
Target.rotation = Quaternion.Euler(yAngle, xAngle, 0);
Player.rotation = Quaternion.Euler(0, xAngle, 0);
}
}
}