在 LibGDX 中限制透视相机缩放的最佳方法是什么?我在太空中有一颗行星,我需要放大/缩小它。缩放效果很好,但我必须限制它以防止地球离用户太近而离他太远。现在,我使用标准的 CameraInputController
来放大/缩小并使用以下代码限制它:
protected boolean pinchZoom (float amount) {
if(rho>25.f && rho<60.f){
return zoom(pinchZoomFactor * amount);
}
camera.update();
rho = calculateRho();
if(rho<=25.0){
while(rho<=25.0){
zoom(-.1f);
camera.update();
rho = calculateRho();
}
}
if(rho>=60){
while(rho>=60.0){
zoom(.1f);
camera.update();
rho = calculateRho();
}
}
}
private float calculateRho(){
return (float) Math.sqrt(Math.pow(camera.position.x, 2)+
Math.pow(camera.position.y, 2)+Math.pow(camera.position.z, 2));
}
使用这段代码,我的相机有时会抖动一点。所以,我找到了另一种方法。
最佳答案
我找到了解决方案。我只是声明对输入变量 amount
求和的变量,然后我检查这个值的范围。
float currentZoom=0;
private final float maxZoom = .5f;
private final float minZoom = -2.1f;
protected boolean pinchZoom (float amount) {
currentZoom += amount;
if(currentZoom>=maxZoom) currentZoom=maxZoom;
if(currentZoom<=minZoom) currentZoom=minZoom;
if(currentZoom>minZoom && currentZoom<maxZoom){
return zoom(pinchZoomFactor * amount);
}
return false;
}
它非常适合我!我希望这个解决方案可以帮助其他人。
关于android - LibGDX - 限制透视相机的缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015216/