原文如下:
Unity 物体根据手指拖动而转动(可用于物体的360度展示)(手机端)
Unity 物体根据鼠标移动而转动(可用于物体的360度展示)(PC端)
个人转载,学习记录下实现逻辑方法:
public Transform target;
private Vector3 startPos;
private Vector3 nowPos;
void Update()
{
if (Input.touchCount == 0)
{
if (Input.GetTouch(0).phase == TouchPhase.Began)//开始触屏;
{
startFingerPos = Input.GetTouch(0).position;
}
if (Input.GetTouch(0).phase == TouchPhase.Moved)//触屏移动
{
Vector3 nowFingerPos = Input.GetTouch(0).position;
private float xMoveDistance = Mathf.Abs(nowFingerPos.x - startFingerPos.x);
private float yMoveDistance = Mathf.Abs(nowFingerPos.y - startFingerPos.y);
if (xMoveDistance > yMoveDistance)
{
if (nowFingerPos.x - startFingerPos.x > 0)//沿着X轴负方向移动
target.transform.Rotate(Vector3.up * -1 * Time.deltaTime * 50, Space.World);
else//沿着X轴正方向移动
target.transform.Rotate(Vector3.up * Time.deltaTime * 50, Space.World);
}
else
{
if (nowFingerPos.y - startFingerPos.y > 0)//沿着Y轴正方向移动
target.transform.Rotate(Vector3.up * -1 * Time.deltaTime * 50, Space.World);
else//沿着Y轴负方向移动
target.transform.Rotate(Vector3.up * Time.deltaTime * 50, Space.World);
}
}
}
}