Tilemap - 碰撞层是否必要?

时间:2010-08-10 02:17:39

标签: c# xna tiles collision

我正在创建一个2d侧滚动游戏并且有关于碰撞的问题。我一直在阅读各种文章,其中一些人说你应该有一个碰撞图层,这与图块层完全相同,但只是存储比特。我理解这个逻辑,但如果我的tile实际上是包含名为IsSolid的属性的结构,该怎么办?我是否可以不检查当前的图块isSolid而不是另一个图层?或者碰撞层是否提供了我错过的其他好处?

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

如果你的游戏支持多层,那真的很重要。

如果您有多个可视图层(例如:background,playfield,foreground),那么能够以相同的方式处理所有这些图层会很有帮助。分离出碰撞数据在结构上可能是“不错的”。

你如何做到这一点取决于你。您可以实现单独的碰撞图层,您可以单独编辑它。但是我建议不要使用它,因为那时你必须让你的碰撞层与你的视觉“playfield”层保持同步。

更好的解决方案是,当你加载一个关卡时,通过从你的游戏场层(以及其他层,如果这对你的游戏有意义)中提取数据来动态生成一个碰撞“层”。您可能会以完全不同的格式存储此“图层”,并将其放置到关卡的可视数据中。