如何在Java中进行冲突?

时间:2015-03-13 18:12:18

标签: java collision-detection

在基于迷宫的Java游戏中实现碰撞检测的最简单方法是什么?这可能是障碍,但我认为可能有更好的方法。这是我目前的代码:

package asa.game.main.tile;
import asa.game.main.gfx.Assets;

public class Wall extends Tile{

    public Wall(int id) {
        super(Assets.wall_one, id);
    }

}

2 个答案:

答案 0 :(得分:0)

首先,我建议创建一个更新线程来调用碰撞检测功能。根据播放器的形状和大小,您可以

wall.getBounds()。contains(component.getX(),component.getY())

如果您使用Swing API(JComponents,JPanels等),这将有效

另外,如果你使用它,你需要做一些涉及组件大小的数学运算,因为组件的x和y值是每个组件的左上角。

如果您没有使用Swing API,因此进行一些自定义绘画,有多种方法可以检测游戏对象之间的碰撞。您可以为每个对象分配半径或框(取决于对象的形状)并编写自己的碰撞功能。在我个人看来,我会写一个函数,如 -

保存播放器的坐标 如果玩家的坐标在墙上     回到以前的coords 其他     保存播放器的新坐标

- 它似乎不会跳跃,因为线程非常频繁地更新 -

答案 1 :(得分:0)

既然您说过迷宫,那么您可以做的一件事就是为每个墙段定义一个java.awt.Rectangle,并让您的物体穿过迷宫。

您可以使用intersects方法检查对象是否已撞到任何墙段。