【问题标题】:Collision Hit Boxes for 2D fighting game. Tools?用于 2D 格斗游戏的碰撞盒。工具?
【发布时间】:2010-11-02 22:45:37
【问题描述】:

我正在开发一款 2D 格斗游戏,其风格与 iPhone 版 Capcom 的 Street Fighter Alpha 相同。对于碰撞检测,我正在考虑在动画中为每个精灵帧创建几个命中框,并在主游戏循环中检查它们之间的碰撞。是否有任何工具可以在精灵上创建命中框并生成此元数据(例如在 .plist 或 .xml 中)?

cocos2d iPhone 社区开发的其他 2D 格斗游戏如何处理碰撞检测和有用元数据的生成?

感谢您的回复。

【问题讨论】:

  • 尝试更具体地回答您的问题:我可以看出您主要对碰撞检测感兴趣,所以不要将有限状态机和 AI 混为一谈 - 单独询问。

标签: cocos2d-iphone collision-detection


【解决方案1】:

在格斗游戏中,实际上不执行碰撞检测(或者说不应该执行)。

当玩家 A 执行“攻击”时,您要做的是确定玩家 A 与玩家 B 的距离。玩家 A 的攻击是“静态的”:

High Punch = 64px reach
Low Punch = 54px reach
Mid Punch = 45px reach
High Kick = 64px reach
etc, etc, etc

然后,您将根据执行的攻击和与玩家 B 的距离以及玩家 B 的当前状态来确定 - 攻击是“着陆”、“阻挡”还是“未命中”(对蹲伏敌人的高踢攻击是“未命中”,而 Low Kick Attach with Crouched Enemy NOT in Block 是“命中”)。

这是一系列“规则”——如果两个玩家在特定距离内,并且每个玩家的状态对攻击都是正确的,那么攻击者“着陆”,或者防御者“阻挡”或攻击者“未命中”。

【讨论】:

  • 当然,这就是我实现这一目标的方式——许多其他人在“碰撞检测”路线上尝试并失败了,在格斗游戏中,这是完全没有必要的,而且还浪费了大量的 cpu计算碰撞的资源,因为大多数碰撞系统都是更大的物理引擎(即 Box2D、Chipmunk 等)的一部分。设置这些“规则”可能听起来很耗时,但与设置一些简单规则相比,您将花费更多时间来尝试找出“碰撞检测”。创建一个角色并为该角色定义规则,然后以此为基础
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多