旋转Java碰撞检测旋转矩形?
我正在编写我的第一个java游戏,到目前为止:
我制作了一个矩形,可以让WSAD四处走动,他总是面对鼠标指向的地方。此外,如果你点击,他会在你鼠标指向的地方射出子弹(子弹会朝这个方向旋转)。我也制造了敌人,他们会跟着你转,面对你的角色。我遇到的问题是,我编写的碰撞检测只是在对象(角色、敌人和子弹)旋转之前检测它们的碰撞(使用.intersects())。这意味着在绘制时,它们身体的某些部分会重叠
我一直在四处寻找,没有找到任何我理解或适用于我的情况的解决方案。到目前为止,我一直在为每个对象旋转我的Graphics2D网格,所以它们实际上没有被旋转,只是被画出来。有没有一种方法我可以旋转它们的形状,然后使用类似的东西。相交()
任何帮助或建议都将不胜感激
下面是我用来观察它是否会在x轴上移动而发生碰撞:
public boolean detectCollisionX(int id, double xMove, double rectXco, double rectYco, int width, int height)
{
boolean valid=true;
//create the shape of the object that is moving.
Rectangle enemyRectangleX=new Rectangle((int)(rectXco+xMove)-enemySpacing,(int)rectYco-enemySpacing,width+enemySpacing*2,height+enemySpacing*2);
if (rectXco+xMove<0 || rectXco+xMove>(areaWidth-width))
{
valid=false;
}
if(enemyNumber>0)
{
for (int x=0; x<=enemyNumber; x++)
{
if (x!=id)
{
//enemies and other collidable objects will be stored in collisionObjects[x] as rectangles.
if (enemyRectangleX.intersects(collisionObjects[x])==true)
{
valid=false;
}
}
}
}
return valid;
}
# 1 楼答案
如果对象类型为Area,则可以使用AffineTransform类旋转各种对象
假设有两个对象a和b,可以这样旋转它们:
你有原始的物品,以防万一这就是你想要的。使用仿射变换可以很容易地组合变换、求逆等