我的相机上有一个缩放功能,当我在屏幕上捏手指时,它会在Z轴上移动。但是,当相机移动到大于零的任何值时,它会对我的相机代码(移动,轨道运行)产生不利影响。
我把一个bool放在一个地方,一旦它达到一定的值就会阻止我的相机移动,但它会使它非常跳跃。如果你的捏,相机仍将移动超过值,直到你放手。
所以我现在要做的是使用Mathf.Clamp来限制它可以移动的范围,但我不确定我是否正确使用它。这是我现在的方法:
void CameraZoom()
{
// if fingers moved certain distance apart, zoom
float dot = Vector2.Dot(Input.GetTouch(0).deltaPosition.normalized, Input.GetTouch(1).deltaPosition.normalized);
if (dot < fingerDistance)
{
// Store both touches.
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;
// apply zoom to camera
transform.Translate(0, 0, -deltaMagnitudeDiff * perspectiveZoomSpeed);
// clamp movement
transform.position = new Vector3(transform.position.x, transform.position.y, Mathf.Clamp(0, 0, maxDistance));
}
}
}
我只希望这会影响Z轴,但是当我缩放时,我的整个装备都会被移动。我做错了什么?
更新
我已将我的代码更改为以下内容,但现在当我缩放时,它只是在两点之间跳转而我无法再缩放。
新代码:
transform.Translate(0, 0, -deltaMagnitudeDiff * perspectiveZoomSpeed);
Vector3 pos = transform.position;
pos.z = Mathf.Clamp(transform.position.z, 0.0f, -200.0f);
transform.position = pos;
答案 0 :(得分:1)
检查date points type name rank year_week
-------------------------------------------------
23.10.2014 2000 1 Fish 2 201442
12.10.2014 2500 1 Fish 2 201441
16.10.2014 800 2 Fish 2 201441
的{{3}}。您正在以错误的顺序使用参数,这会破坏函数的内部实现。 Mathf.Clamp
值应为第二个值,min
值应为第三个值。因此,将您的行更改为此应该可以阻止奇怪的行为:
max