使用简单的Java 2D游戏。坦克由用户控制。它可以以任何角度旋转,并沿该角度方向移动。
我正在为坦克制作一个边界框,所以稍后我可以添加碰撞检测。目前,无论它在哪里,我都有精灵后面的框,但是当精灵旋转时它不会旋转。我尝试添加代码以使框子与精灵一起旋转,但添加此代码只会使边界框变得疯狂。它不再是一个盒子,更像是一条闪烁和移动的线条。
(显然,边界框应该是不可见的,但是现在我在屏幕上绘制以检查问题)。
xcoo[]
和ycoo[]
都是double
类型,每个都包含四个值。这些值是边界框的四个顶点的坐标(矩形Path2D
)。
(请注意,实际的边界框仅在需要在屏幕上绘制时,或者在我尚未编写的碰撞检测中创建。大多数情况下,它只是坐标。)< / em>的
Tank的move()
方法在游戏循环的每个循环中调用。
move()
方法更新精灵的位置以及边界框的位置。这很好用。但正如我所说,试图在该方法中旋转边界框(也就是使用旋转矩阵操纵它的顶点),使其成为现实
以下是Tank
的{{1}}方法:
move()
我的轮换有什么问题?我怀疑这是问题所在代码的一部分,但如果你有不同的想法,请告诉我发布更多代码。
非常感谢
答案 0 :(得分:1)
回答问题的标题 - 当精灵旋转时,边界框不会旋转
在计算机图形学中,最常见的边界框实现是Axis-aligned minimum bounding box,当你旋转精灵时它显然不会旋转,因为它是轴对齐。
我不知道您正在使用的Java 2D
包的实现方式,但它听起来确实如此,而不是您希望的Arbitrarily oriented minimum bounding box。
也许你的边界框的渲染会以某种方式假设它是axis-aligned
,因此当你用一个不是axis-aligned
的框来呈现它时就无法渲染。