小编Mon*_*o10的帖子

两个Shape对象之间的Java碰撞检测?

我想知道判断Shape对象是否与另一个形状相交的最佳方法.目前我在我的游戏中进行了碰撞检测,只要它涉及一个与矩形相交的形状,反之亦然.我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不是另一个Shape.有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试过的一种方法是使用for循环生成一个点区域来测试它们是否在形状中,然后构建一个Point对象数组以发送到另一个形状进行测试,但这显着降低了我的帧率因为所有不必要的比较.

我在这里寻找并寻找类似的东西,但没有找到任何真正的东西.如果这是重复,请提前抱歉.

java 2d intersection shape collision

14
推荐指数
2
解决办法
3万
查看次数

如何使gif运行一次并停止在Java中?

基本上我有一个游戏,我想在玩家(或敌人)死亡时玩爆炸gif,但我希望gif只玩一次.我已经在一个类中设置了所有内容,并且我有一个ArrayList,当我需要它时会添加爆炸,并且我目前已经将它设置为在达到gif的持续时间后将其删除(使用System.currentTimeMillis()) .唯一的问题是它不准确,有时gif提前停止并消失,有时它会翻身,这两种情况都会导致下一个从另一个停止的地方开始.是否有某种方法,类,某种类型的监听器,或者我可以使用什么来告诉我的gif是什么帧,或循环多少次?我的代码可以完成其余的工作,我只需要更好的东西放在我的if语句中,而不是:

g2D.drawImage(explosion, x - 150, y - 150, null);
    if(System.currentTimeMillis() - startingTime > 520){
        System.out.println(System.currentTimeMillis());//for testing accuracy
        Game.explosions.remove(this);
        explosion = null;
    }
Run Code Online (Sandbox Code Playgroud)

java animation swing awt gif

3
推荐指数
1
解决办法
2855
查看次数

标签 统计

java ×2

2d ×1

animation ×1

awt ×1

collision ×1

gif ×1

intersection ×1

shape ×1

swing ×1