小编Dom*_*nic的帖子

旋转矩形的Java碰撞检测?

我正在编写我的第一个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;
}
Run Code Online (Sandbox Code Playgroud)

java collision-detection rotation rectangles

5
推荐指数
1
解决办法
4813
查看次数

标签 统计

collision-detection ×1

java ×1

rectangles ×1

rotation ×1