2015-03-13 34 views
0

在基于迷宫的Java游戏中实现碰撞检测的最简单方法是什么?这可能是障碍,但我认为可能有更好的办法。这是我目前的代码:如何在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); 
    } 

} 
+0

如果它使用的是精灵,我会建议一个isOverlapping函数来检查此对象的x1,x2和y1,y2以及isOverlapping(otherObject)中的对象。 – avk 2015-03-13 18:30:29

回答

0

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

wall.getBounds()。含有(component.getX(),component.getY())

这样,如果你使用的是工作Swing API(JComponents,JPanels等)

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

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

这样的功能保存播放 的COORDS如果玩家的COORDS在墙上 返回到上一COORDS 其他 保存播放

新COORDS

- 这似乎心惊肉跳不会因为线程正在更新非常频繁 -

0

既然你说迷宫,有一两件事你可以做的是定义一个java.awt.Rectangle每个壁部分和你的对象通过迷宫移动。

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