我想实现类似于“Clash of Clans”的缩放效果。我目前正在以几乎所有在线教程的方式实现缩放。当然还有我的相机特定常数,可以让我的相机以很快的速度进行变焦。代码可以工作。
@Override
public boolean zoom(float initialDistance, float distance) {
float zoomAmount = -1*(distance - initialDistance)/10000;
cameraHelper.addZoom(zoomAmount);
return true;
}
相机助手类做了这么简单的事情:
public void addZoom(float amount) {
setZoom(zoom + amount);
}
public void apply(OrthographicCamera camera) {
camera.zoom = zoom;
camera.update();
}
所以这确实有效。当我以一个连续动作拍摄两个手指然后停止在屏幕上移动手指时,假设我使用zoomAmount = x放大,缩放被调用一次并且缩放完成。
问题: 但是,如果我稍微摇动一个或两个手指,则会再次使用zoomAmount = x的相同值调用zoom。因此,通过摆动手指,它将继续添加缩放并保持放大或缩小(取决于zoomAmount的当前状态)。
问题: 如何使libgdx或java记住我的原始camera.zoom,与zoom()方法中的initialDistance非常相似。或者,还有其他任何技巧可以做出响应和平滑的变焦(不会从屏幕上移开手指),就像游戏“Clash of Clans”一样。
额外信息:
我试过捏,效果一样。我考虑过有一个基本缩放值,然后是某种百分比乘数,但是因为我必须通过设置它的变焦来更新相机(camera.zoom = zoom;)我想不出一个加减法的巧妙技巧任何不受zoom()影响的值都会被不断调用。有什么想法吗?