我一直在尝试解决CameraInputController的pinch缩放问题。我希望它可以在原点放大和缩小,但限制在3到10之间。我在zoom()函数中加入了以下代码:
public boolean zoom (float amount) {
if(camera.position.len() < 3 && amount > 0)
{
return false;
}
if(camera.position.len() > 10 && amount < 0)
{
return false;
}
if (!alwaysScroll && activateKey != 0 && !activatePressed)
return false;
Gdx.app.log("zoom", amount + "");
camera.translate(tmpV1.set(camera.direction).scl(amount));
if (scrollTarget)
target.add(tmpV1);
if (autoUpdate)
camera.update();
return true;
如果我只调用缩放函数(例如缩放按钮),那么这个功能可以正常工作,但是当我使用捏合手势进行缩放时,相机可以缩小到3倍以上,而在缩小时,当相机接近10倍时相机会跳动得非常剧烈。奇怪的是,如果我不设定这些边界,捏合缩放会非常平滑。
如果我输出amount变量,则捏合缩放会给我一系列数字,例如缩小时:
-3.4762511
3.425479
-3.386308
3.353984
当进行缩放时,会出现这种情况:
3.6231816
-3.553997
3.8673449
-3.81199
当我查看CameraGestureListener中的zoom()函数时,其中的amount值也在大量变化。如果我查看pinch()函数,那么每次调用它时,pointer2位置会在第一和第二个手指的位置之间交替变化。
这可能是一个错误吗?有没有人知道发生了什么?我该如何解决这个问题?