【发布时间】:2020-03-24 14:10:42
【问题描述】:
我正在尝试使用多点触控(捏合)来缩放对象。
它工作正常,但是当我放开 2 次触摸并尝试再次放大和缩小时,
物体不断尝试回到原来的比例。
我使用了下面的代码。
if (Input.touchCount == 2 && Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
{
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);
Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;
float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag;
float pinchAmount = deltaMagnitudeDiff * 0.02f * Time.deltaTime;
objectImRotating.transform.localScale += new Vector3(pinchAmount, pinchAmount, pinchAmount);
}
【问题讨论】:
-
顺便说一句,如果不是两者都接触到移动的地方怎么办? ;) 另一个旁注:你可以把
new Vector3(pinchAmount, pinchAmount, pinchAmount)写成Vector3.one * pinchAmount; -
@derHugo 如果两者都没有移动,则对象保持静止。如果其中一个移动而另一个没有移动,则对象将根据移动的触摸位置放大和缩小。
-
但这只有在它们之间有
||而不是&&时才会发生,对吗? -
@derHugo 是的,你是仪式
-
@derHugo 我上传了一张现在正在发生的事情的 gif 图像。你会在第一次缩放后看到,如果我再试一次,对象想要回到原来的比例。