java矩形碰撞检测_旋转矩形的Java碰撞检测?

在开发Java游戏中,作者遇到了旋转矩形的碰撞检测问题。当前的检测方法只考虑了旋转前的矩形,导致在实际绘制时存在重叠。作者尝试了旋转Graphics2D网格来模拟旋转,但寻求一种能够实际旋转形状并有效进行碰撞检测的方法。detectCollisionX函数用于检查在x轴移动时是否发生碰撞,但不适用于旋转矩形。作者希望得到帮助或建议以改进旋转矩形的碰撞检测算法。
摘要由CSDN通过智能技术生成

我正在编写我的第一个

java游戏,到目前为止:

我做了一个可以用WSAD走动的矩形,他总是面向鼠标指向的地方.此外,如果你点击,他会射击你的鼠标指向的子弹(并且子弹旋转以面向那个方向).我也制造了跟随你的敌人,他们旋转面对你的角色.我遇到的问题是我写的碰撞检测只是在旋转之前检测物体(角色,敌人和子弹)的碰撞(使用.intersects()).这意味着他们的身体的某些部分在绘制时会重叠.

我一直在环顾四周,而且我没有找到任何我理解或可以适用于我的情况的解决方案.到目前为止,我一直在为每个对象旋转我的Graphics2D网格,所以它们实际上并没有被旋转,只是被抽出来了.有没有办法可以实际旋转形状,然后使用像.intersects()这样的东西?

任何帮助或建议表示赞赏.

以下是我用来查看它是否会因在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;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值