java - 在 Libgdx 中设置相机旋转

标签 java camera rotation box2d libgdx

我似乎无法找到一种方法将我在 libgdx(使用 box2d 的项目)中的正射相机的旋转与 box2d 主体的旋转联系起来。 有 cam.rotate(xy) 的方法,给它一个脉冲或加速度,但我想设置一个确定的值,比如

cam.setAngle(player.body.getAngle());

我该怎么做呢?我必须编写自己的函数吗?如果是这样,那又如何呢?我希望相机的旋转始终与玩家的旋转相同...

谢谢!

最佳答案

睡了一夜好觉后,我醒来时脑子里想着解决方案! 函数 cam.angle(angle) 显然确实将角度设置为您想要的角度(以度为单位)-但您只能执行一次而不是在更新循环中,否则相机就会开始旋转。这很明显,但我就是不明白。

另一个问题是 box2d 主体具有“无限”度数(我用 *MathUtils.radiansToDegrees 将所有东西都转换为度数),所以我不得不将它们限制在 0 到 359 之间:

playerAngle = player.body.getAngle()*MathUtils.radiansToDegrees;

while(playerAngle<=0){
        playerAngle += 360;
    }
while(playerAngle>360){
        playerAngle -= 360;
    }

相机的度数从 -180 到 180,因此您还必须将它们转换为 0 到 359:

    camAngle = -getCameraCurrentXYAngle(camera) + 180;

函数“getCameraCurrentXYAngle(cam) 如下:

public float getCameraCurrentXYAngle(OrthographicCamera cam)
{
    return (float)Math.atan2(cam.up.x, cam.up.y)*MathUtils.radiansToDegrees;
}

现在使用它来更新您的凸轮以适应播放器的旋转:

    camera.rotate((camAngle-playerAngle)+180);

我希望这对给我的问题投赞成票的人有所帮助;)

干杯,祝你有一个富有成效的一天! 乔纳斯

关于java - 在 Libgdx 中设置相机旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16509244/

相关文章:

android - 使用 camera2 API 捕获图片而不进行预览

ios - 如何在应用程序中使用钛的所有选项打开默认相机?

ios - 防止更改 View Controller 中的方向

objective-c - 如何检测以编程方式生成的 UIView 的旋转

java - 如果没有记录层,我怎样才能只获得 TLS 握手?

java - 新对象 : new operator vs serialization

java - 正则表达式检查整数有效性和范围

JavaFX - 如何同步 FXML 文件中声明的两个元素的滚动条

Android 相机在 startPreview() 时卡住,没有任何错误信息

r - 在 R 中平滑方向(角度)数据