最近我一直在尝试让我的相机像在 Pokemon Go 中一样旋转,我的意思是每当玩家做一个圆形触摸手势(如下图)时,相机也会以这种方式旋转,如果他们返回到他们开始的原始点,旋转继续进行。此外,像这样向右和向左旋转的能力是我尚未复制的。
我尝试了各种代码片段但无济于事。我试图让我的相机只在 Z 轴上旋转,因为我需要我的 X 旋转为 90* 和 Y 为 0.
如果有人知道如何做到这一点,我将不胜感激:)
if(Input.touchCount==1 && inputsPaused == false)
{
Touch firstTouch = Input.GetTouch(0);
//if (firstTouch.deltaPosition.y > 0)
//{
// if (firstTouch.deltaPosition.x < 0)
// {
// transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
// compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
// }
// else
// if (firstTouch.deltaPosition.x > 0)
// {
// transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
// compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
// }
//}
//else
// if (firstTouch.deltaPosition.y < 0)
//{
// if (firstTouch.deltaPosition.x < 0)
// {
// transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
// compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
// }
// else
// if (firstTouch.deltaPosition.x > 0)
// {
// transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
// compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
// }
//}
if (firstTouch.position.y > 0)
{
transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
}
else
if (firstTouch.position.y < 0)
{
transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
}
text.text = "X: " + firstTouch.position.x + " Y: " + firstTouch.position.y;
//if (Input.GetTouch(0).phase == TouchPhase.Began)
//{
// startAngle = Mathf.Atan2(touchPos.y, touchPos.x) * Mathf.Rad2Deg;
// if (startAngle <= 0)
// {
// startAngle += 360;
// }
//}
//angle = Mathf.Atan2(touchPos.y, touchPos.x) * Mathf.Rad2Deg;
//if (angle < 0)
// angle += 360;
//distanceAngle = startAngle - endAngle;
//angle -= distanceAngle;
//if (angle < 0)
// angle += 360;
//else if (angle > 360)
// angle -= 360;
//if (Input.GetTouch(0).phase == TouchPhase.Ended)
//{
// endAngle = angle;
//}
//transform.rotation = Quaternion.Euler(transform.rotation.x, transform.rotation.y, angle);
}
}