之前的方法实现出来的效果不太好,会出现不在边界也会有,一拖动就返回的现象,所以又重新修改了一下,不同的地方在于将边界检测与正常情况拖动进行了分类处理。
正常情况的检测是通过间接控制速度,边界检测则是控制位移;之前的是列表的,只能纵向拖动,现在修改了之后改为不限定方向,只要不出一个矩形框的范围就行。
float touchDeltaPositionX;
float touchDeltaPositionY;
float maxX=0f;
float maxY=0f;
float targetX=0f;
float targetY=0f;
float newPositionX;
float newPositionY;
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){
touchDeltaPositionX=Input.GetTouch(0).deltaPosition.x;
touchDeltaPositionY= Input.GetTouch(0).deltaPosition.y;
maxX=Mathf.Max(maxX,Mathf.Abs(touchDeltaPositionX));
maxY=Mathf.Max(maxY,Mathf.Abs(touchDeltaPositionY));
if(touchDeltaPositionX<0)
maxX=-maxX;
if(touchDeltaPositionY<0)
maxY=-maxY