【问题标题】:Tile based collision in XNAXNA 中基于瓦片的碰撞
【发布时间】:2012-06-01 08:15:05
【问题描述】:

我在我的 XNA 游戏中绘制了图块并加载了我的角色。然而,我的角色并没有移动——地图会移动,这让它产生了移动的错觉。现在我想知道如何实际测试它们的碰撞。我的意思是,碰撞代码去哪里了,我如何让所有图块都代表“一件大事”?

【问题讨论】:

  • 你能说明一下情况吗? IE。你是如何在游戏中使用瓦片地图的?角色是占据一个瓷砖还是多个瓷砖(俄罗斯方块)?游戏障碍是否占据多个图块?我有点不知所措,因为我认为碰撞检测只是将角色的位置与瓷砖地图中的障碍物进行比较的简单问题,而不是基于像素的碰撞检测......

标签: c# xna collision-detection


【解决方案1】:

在 XNA Creator's Club 上有一个关于 pixel based collision detection 的教程。您需要弄清楚要对哪些对象进行碰撞检测。我猜您希望角色在平铺背景上移动,因此您不想检查角色与背景之间的碰撞。相反,您应该制作任何障碍物的精灵并对其进行碰撞检测。

【讨论】:

  • 我知道,但我不知道如何测试这些障碍物的碰撞,因为它们是由 for 循环放置的图块。
  • 我不确定我是否遵循。如何绘制纹理并不重要。您需要确定要进行碰撞检测的纹理,并按照示例中包含的 .htm 文件中的说明应用检测。
  • 好吧,既然我多次绘制每个纹理,我不是必须多次应用碰撞吗?如果是这样,我会在哪里做-在我的绘图代码中>
  • 我猜你有代表背景的纹理。我假设您将多次绘制这些内容,并且您不想检测与这些内容的冲突。如果您还有其他想要检查碰撞的障碍物,则必须逐一检查。
  • 哦,我想我的方法可能是错误的。我试图绘制不代表背景的纹理,而是代表障碍物。
【解决方案2】:

你可以看看Nick Gravelyn's Tile Engine Tutorials,它经历了创建磁贴引擎的全过程。有一个链接 here 可以查看 YouTube 上的所有教程。

【讨论】:

    【解决方案3】:

    您可以查看Platformer Starter Kit,它展示了如何在地图中组织图块并检查碰撞。

    【讨论】:

    • 我查看了那里但找不到实际发生碰撞的类文件...
    【解决方案4】:

    矩形有一个 intersects 方法。如果您的玩家居中并且您知道坐标,则在滚动地图之前循环遍历其他 texture2ds 并检查交叉点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      相关资源
      最近更新 更多