gpt4 book ai didi

java - 使用 TiledMap 的 Libgdx 碰撞检测

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:58 26 4
gpt4 key购买 nike

我正在努力通过分块 map 实现碰撞检测系统。我有一个二维“口袋妖怪风格”游戏,它渲染了一个平铺 map 。具体来说,我的平铺 map .tmx 文件中有一个“碰撞”层,我想与玩家和其他实体进行交互。我的问题是如何将玩家 Sprite (扩展 Sprite 类)连接到瓷砖 map 的“碰撞”层并导致两者之间发生碰撞。任何建议表示赞赏。

最佳答案

首先,您的Player 可能不应该extend Sprite,因为您的播放器通常不仅仅是一个Sprite。它可能由多个 Sprite 或什至 Animations 组成。保留 Sprite 作为玩家的属性。

这个问题本身已经被解决了好几次。您通常需要执行以下步骤:

  1. 在 map 中找到碰撞层
  2. 从该层中提取所有对象
  3. 检查每个对象是否发生碰撞

在代码中这可能看起来有点像这样:

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
}
}

您可能感兴趣的更多链接:

关于java - 使用 TiledMap 的 Libgdx 碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com