我正在努力通过tiledmap实现一个碰撞检测系统。我有一个2d“口袋妖怪风格”的游戏,有一个平铺的地图渲染。具体来说,我的平铺地图中有一个“碰撞”层。我希望与播放器和其他实体进行交互的tmx文件。我的问题是,我如何将播放器sprite(扩展Sprite类)连接到tiledmap的“碰撞”层,并导致两者之间的碰撞。感谢任何建议。
首先,您的Player
可能不应该扩展精灵,因为您的玩家通常不仅仅是精灵。它可能包含几个精灵,甚至
动画
。保留精灵作为玩家的财产。
这个问题本身已经被讨论了几次。你通常需要以下步骤:
< li >在您的地图中查找碰撞层 < li >从该层提取所有对象 < li >检查每个对象是否有碰撞
在代码中,这可能看起来有点像:
int objectLayerId = 5;
TiledMapTileLayer collisionObjectLayer = (TiledMapTileLayer)map.getLayers().get(objectLayerId);
MapObjects objects = collisionObjectLayer.getObjects();
// there are several other types, Rectangle is probably the most common one
for (RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)) {
Rectangle rectangle = rectangleObject.getRectangle();
if (Intersector.overlaps(rectangle, player.getRectangle()) {
// collision happened
}
}
您可能感兴趣的更多链接:
|第 4 集 - 碰撞检测
- |第 4 集更新 - 更好的碰撞检测实现
- 使用 libgdx 进行Android游戏开发 – 碰撞检测,第 4 部分
- 超级科阿里奥示例游戏与平铺地图和碰撞
我正在做一个2d平板游戏。到目前为止,我已经做了一些事情。我正在使用libgdx的矩形进行基本的碰撞检测,所以考虑到我现在只有草块,我用Java制作了一个单块世界(文件读取器还没有准备好),问题是我的检测只在第一次工作,换句话说,如果我产生碰撞到一个块,它会检测到碰撞并这样做。虽然如果我在没有碰撞的情况下,让我的球员在方块顶部出现,球员将永远摔倒。 这是代码=
我计划一个独立游戏项目已经有一段时间了。我会为你总结一下,这样我就可以直接回答这个问题。 它是通过Visual Studio完全使用最新版本的XNA完成的。希望将其放在360和PC上,但目前我只是在真正寻找面向PC的解决方案。 这是一个2D侧向滚动射击游戏(想想大都会风格,甚至是Terraria)。它最终将包括一个游戏中的地图编辑器,地图是基于图块的(16x16)。会有向上和向下滚动。我希望在开发
我使用SFML 2.1进行图形,我的游戏结构非常严格地遵循SFML书(SceneGraph实现等)我的世界主要由角色(大约1-400,四处移动)和瓷砖(3600,静止)组成,每次移动时我都会检查碰撞 在最坏的情况下,大约400个字符移动,大约3600个平铺,我有4000个可能的实体,每帧有800个冲突检查调用(单独的X和Y移动)- 几乎我所有的实体都有16x16像素的大小,我一直在考虑实现四叉树或
我使用时间线动画线,但我不能检测碰撞。这是一个简短的例子,我基本上是在尝试做什么。 我使用了我在堆栈溢出中找到的其他一些代码,方法,想法。就像下面这样: 以及此代码的一些变体。 任何想法都会有所帮助
我正在开发一款平台游戏,我想做一些基本的平台碰撞,遗憾的是我还是做不到。玩家的移动是这样计算的: 所有变量都是具有< code>x和< code>y值的向量。这和预期的一样,问题是有冲突。我的规则是: 当降落在平台上时停止坠落。 从平台运行时开始下降。 在跳跃过程中击中平台时停止向上移动。 撞墙时停止向一侧移动,但能够向相反方向移动。 检查底部是否与平台碰撞非常简单,但棘手的部分是检测哪一侧与平台
碰撞检测 现在你知道了如何制造种类繁多的图形对象,但是你能用他们做什么?一个有趣的事情是利用它制作一个简单的 碰撞检测系统 。你可以用一个叫做:hitTestRectangle 的自定义的函数来检测两个矩形精灵是否接触。 hitTestRectangle(spriteOne, spriteTwo) 如果它们重叠, hitTestRectangle 会返回 true。你可以用 hitTestRect