android – LibGDX – 限制透视摄像机的缩放

android – LibGDX – 限制透视摄像机的缩放,第1张

概述在LibGDX中限制透视相机缩放的最佳方法是什么?我在太空中有一颗行星,我需要放大/缩小它.缩放效果很好,但我必须限制它以防止行星如此靠近用户并远离他.现在,我使用标准的CameraInputController来放大/缩小并使用以下代码限制它: protected boolean pinchZoom (float amount) { if(rho>25.f && rho<60.f){ 在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)); }

使用这个代码我的相机有时会摇晃一下.所以,我找到另一种方式.

解决方法 我找到了解决方案.我只是声明变量,它将输入变量总和,然后检查该值的范围.

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 – 限制透视摄像机的缩放全部内容,希望文章能够帮你解决android – LibGDX – 限制透视摄像机的缩放所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存