我知道这个问题已经问了很多遍了,但是我没有找到任何好的答案。
所以我有一些游戏实体,现在检查碰撞的最佳方法是什么?
链接:
游戏(完成)
代码说明:
我有一个世界一流的实体列表:
List<Entity> entities = new ArrayList<Entity>();
// The list in the World class
我使用以下代码更新它们(仅在视图范围内):
public void update(GameContainer gc, int delta) {
for (int i = 0; i < entities.size(); i++) {
entities.get(i).update(gc, delta);
}
}
// Update entities
所以现在我想检查实体更新方法中是否存在冲突。
我尝试将其作为更新方法:
@Override
public void update(GameContainer gc, int delta) {
for (Entity entity : world.entities) {
if (intersects(entity)) {
// world.remove(this);
}
}
}
// The update method of an entitiy
这是当前的昆虫方法:
public boolean intersects(Entity entity) {
if (entity instanceof Player) {
// Do nothing
} else {
if (shape != null) {
return this.getShape().intersects(entity.getShape());
}
}
return false;
}
// The intersects method of the abstract Entity class
当前,相交方法始终返回true。但为什么?
实现此目的的经典方法是与每个实体关联一个Shape boundingBox,然后在形状上使用Slick2d的“相交”方法:
http://www.slick2d.org/javadoc/org/newdawn/slick/geom/Shape.html#intersects(org.newdawn.slick.geom.Shape)
我相信有一种方法可以对精灵进行逐像素检查,但是如果您不需要像素级精度,则包围盒方法会更有效。
一些代码:
在您的Entity抽象类中添加:
private Shape boundingBox;
public Shape getBoundingBox() {
return this.boundingBox;
}
然后,您的相交方法是:
public boolean intersects(Entity entity) {
if (this.getBoundingBox() == null) {
return false;
}
return this.getBoundingBox().intersects(entity.getBoundingBox());
}
然后,您需要为要检查碰撞的每个实体设置一个边界框。
问题内容: 我遇到一个问题,即一个矩形与另一个矩形发生碰撞。所以我的问题是,如何获取相交方法以检查碰撞?还是在这种情况下还有其他方法可以处理碰撞? 我正在创建一个回合制战斗游戏(类似于《最终幻想》或《龙骑传奇》),其中玩家的角色在屏幕的右侧,而敌人在屏幕的左侧。玩家和敌人轮流进攻。因此,当玩家攻击时,子画面动画会从右到左在屏幕上移动,直到停在敌人面前,进行攻击并返回到其起始坐标。玩家和敌人周围都有
我遇到了一个问题,显示一个矩形与另一个矩形发生了碰撞。所以我的问题是,如何让Intersect方法检查碰撞?或者在这种情况下有其他方法来处理碰撞吗? 我正在制作一个回合制战斗游戏(类似于《最终幻想》或《龙骑兵传说》),其中玩家的角色位于屏幕的右侧,敌人位于屏幕左侧。玩家和敌人轮流攻击。因此,当玩家攻击时,精灵动画会在屏幕上从右向左移动,直到它停在敌人面前,攻击并返回到其起始坐标。玩家和敌人都有一个
碰撞检测 现在你知道了如何制造种类繁多的图形对象,但是你能用他们做什么?一个有趣的事情是利用它制作一个简单的 碰撞检测系统 。你可以用一个叫做:hitTestRectangle 的自定义的函数来检测两个矩形精灵是否接触。 hitTestRectangle(spriteOne, spriteTwo) 如果它们重叠, hitTestRectangle 会返回 true。你可以用 hitTestRect
本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 当试图判断两个物体之间是否有碰撞发生时,我们通常不使用物体本身的数据,因为这些物体常常会很复杂,这将导致碰撞检测变得很复杂。正因这一点,使用重叠在物体上的更简单的外形(通常有较简单明确的数学定义)来进行碰撞检测成为常用的方法。我们基于这些简单的外形来检测碰撞,这样代码会变得
本文向大家介绍js实现碰撞检测,包括了js实现碰撞检测的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下 代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
我正在尝试做一个平台游戏,其中没有斜坡。我正在尝试将碰撞检测降下来,但是我在pygame中找不到一种方法来获得哪一边与另一个Sprite发生了碰撞。有没有人能给我一个好的方法来做到这一点,那不是太庞大,但也能很好地工作在我的情况? 下面是我的玩家类: 我已经将它添加到我的player类中,每次播放器更新时我都运行它,并且它工作...差一点。 在平台顶部的碰撞起作用,在侧面的碰撞几乎总是起作用,除非