唉唷
我跟你说啦
懒的讲而已
https://youtu.be/U5gK12oxCUU?t=163
有没有用?
不能讲太多了
讲太多会变这样 我劝你现在离开 不要按下一页
你影片都没看完 就急着按下一页....
https://youtu.be/U5gK12oxCUU?t=163
先看这一段影片
在考虑要不要按下一页 我有劝你不要
首先要寻找的事情之一就是找出导致美国大兵凯尔 的 无影摔 bug原因
从最早、bug最多的版本 SF2UA(日期 910206)开始
快打旋风2中的“动作”使用三个变量进行编码
一个表示该动作是否为站立/蹲伏/跳跃攻击 另一个表示拳击/踢击以及一个 ID
另一个变量跟踪他们是否站立、行走、攻击或执行强力动作
这每一帧都用在有限状态机来处理动画
这些错误是由于"在选择普通攻击后仍然检查移动输入"(因为允许玩家在执行其他移动
的同时进行前进的动作) 以及按钮解码器直接设置拳头/踢腿变量产生的副作用
也没有考虑想到有些玩家操作习惯的背景
(类似核四工程师自以为把所有可能会出问题的状况都想好了 哈哈 结果想得太简单)
因为你懒得再想更多了
首先,我们来看看“立场”错误
本来你想要得到的动作是这样:
距离对手足够近来倒踢(<70 像素内)
向前冲锋、集气然后开始用脚踢 然后在踢脚完成之前
还发一个阿力固
你必须在集气后有用力按下 并且程式应该允许在同一窗口内使用
结果呢其实这时美国大兵凯尔 执行了倒踢但他没有回到站立位置
而是卡在了倒踢动画的最后一祯图
照理他可能会被击中(看对手角色) 但如果是电脑对手通常就不会这样做
因为他们认为你仍在做某种似乎永远持续的踢击
所以像遇到爪子(维加)就会感到非常困惑并反复进行滑行攻击
倒踢是站立踢腿动作
发生的情况是选择站立踢 然后叫动画正常开始
阿力固 和 脚刀 在整个攻击过程中保持运行
这是允许玩家在执行移动的同时向后或向下冲刺所必需的
在此阶段 因为我们已经蓄积了足够长的时间
并且现在正在向前推进 所以 阿力固 状态机现在正在检查按钮按下的情况
只要当它检测到按钮按下时 它就会调用按钮解码器
按钮解码器(可以在 SF2UA ROM 中的地址 0x3296 处找到它)
基本上是一系列“if”语句
用于测试每个按钮的位元 并设置相应的 出拳/踢脚 和 力道
在第一次if有匹配时就会退出
最后一个条件 就重腿 就没有经过进一步检测 就让它默认返回
即没有检测到其他按钮
只有当已知按钮有按下时,调用子例程才有意义。
出拳在踢之前进行测试
当你按下出拳按钮时 玩家的出拳/踢脚变量将被设置为“出拳”
因此玩家的状态现在是“站立 出拳动作#6”
这实际上代表了 凯尔的"摔"之一 动画不会改变 但"摔"的状态机会运行
这是在 0x2f922
踢的状态机只是等待动画完成 然后将玩家的状态变成正常的站立姿势
可是"摔"的程序则不同
它会在动画中寻找一个特殊的标志 表明被摔的角色现在应该被释放
但这永远不会出现 所以 凯尔 就可以不断地做出
“无影摔”
↙集气