查看: 5270|回复: 1

[讨论] 【水】浅谈 W10E 的斜角穿墙、跳不起来、摇晃跳

[复制链接]

40

主题

817

回帖

14

精华

版主

经验
8436
硬币
1413 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

发表于 2021-6-20 00:34:20 | 显示全部楼层 |阅读模式
本帖最后由 dasasdhba 于 2021-6-20 00:41 编辑

RT
其实斜角穿墙跳不起来很早以前就研究过了,之前水群也说过,不过没有发出来
然后今晚又稍微研究了一下摇晃跳,今天我就把这个问题作个汇总吧(
(不过现在还在追求原版的人应该少了吧?)

  • 斜角穿墙:
    这个问题其实没啥意思,上图:

                                   
    登录/注册后可看大图

    稍微解释一下,Wykrywator nogowy 类似于 RE 里面的马里奥跳跃下界colider loop 是防陷入的
    然后我们很明显可以发现,312 313 314 行写的都是 overlapping,但是 311 行怎么是 collide 呢?
    科普一下,collide 是绿色条件,在每一帧内是立即执行,且只会执行一次,而 overlap 则是按照顺序来的,且会一直执行
    所以问题就非常显然,与 backdrop 的碰撞防陷入只会执行一次,一旦这个 100 次循环次数不够,那马里奥就会仍然处于滞空状态
    (再解释一下,变量 Sekwencer 是判定马里奥是否在空中的,0 在地上,1 在天上,2 在loop中)
    所以这个问题非常容易解决,你只要把 311 行换成 overlapping 就行了
  • 跳不起来:
    如果你用上述方法修复了斜角穿墙,你会很快发现另一个问题:
    怎么连普通地面上都有跳不起来的 bug 了???
    没错,你换成 overlapping 就会导致跳不起来的 bug,这又是为什么呢?
    跳不起来,说白了就是游戏认为马里奥没有落地,也就是 变量 Sekwencer ≠ 0,所以我们很容易定位问题:

                                   
    登录/注册后可看大图

    肯定是这个判断踩空的事件被误执行了嘛,为啥会被误执行呢?
    解释一下,Wykrywator glebinowy 类似于 RE 里面的马里奥踩平台判定,所以肯定是这个彩条位置不对嘛
    我们找找这个彩条在什么地方被设置的位置:

                                   
    登录/注册后可看大图

    啥啊,怎么 239 行就被设置了,这不出问题就怪了!!!
    再仔细一想,原来与 backdrop 的判定是 collide,这个是立即执行的,所以彩条是在这之后被设置的
    但是其他的像与砖块平台的 overlapping 啥的,这些都是在这个彩条的位置设置之后执行的,所以此时
    彩条的位置没有被及时的调整正确!
    因此你应该在 colider loop 里面把这个彩条的位置重新设置一下:

                                   
    登录/注册后可看大图

    so easy~
  • 摇晃跳:
    这个其实还挺有意思的,直接上图:

                                   
    登录/注册后可看大图

    众所周知,马里奥运动的初速度是 8,转向减速度是 4
    所以只要你反复让马里奥的速度在 <5 和 ≥5 之间徘徊,就有可能在 10ms 之间
    同时获得两次速度增益!
    然后就起飞啦(
    但其实这样的操作还是相当不可控的,首先我们并不清楚 Timex 到底是怎么运作的(
    那 RE 为什么感觉明显摇晃跳不起来呢?
    两方面问题,首先是事件执行顺序本身不同
    W10E:跳跃初速度→连跳初速度→速度增益→马里奥Y坐标变更→应用重力加速度
    RE:跳跃初速度→马里奥Y坐标变更→应用重力加速度→连跳初速度→速度增益
    很明显 RE 和 W10E 这块本身就不太一样,虽然只有一帧之差,大体看来大差不差的,
    但这决定了 RE 初始跳跃肯定没有 W10E 跳得高
    但是连跳的结果应该是相同的,所以这个问题其实并不是主要矛盾(
    另一方面,Timex 似乎确实更不稳定一些,以下是我的测试:

                                   
    登录/注册后可看大图

    数字是帧数,s_前缀是从一开始计时的,没有前缀是从左上角的帧开始计时的
    可以发现 Timex 比 Every 的稳定性要差一点,这也可能是原因之一
    说了半天,我怎么在 RE 上实现摇晃跳啊(
    这多简单,你换成 Timex 就行了(((,或者你可以考虑:

                                   
    登录/注册后可看大图

    这样顺便也能解决卡机高跳问题,经过测试这样是可能跳到 7 格的(

                                   
    登录/注册后可看大图

    虽然说明显要困难一些,但这也说明了摇晃跳本身就是非常不可控的操作
    Timex 的不稳定性只是增大了这种操作的可能性(
    所以我这里非常不推荐大家利用摇晃跳做什么设计
    UEL 也不可能加摇晃跳的((


By the way,W10E 的滑蹲如果按住方向键可以滑的更远,RE 这一点没有还原到哦((

以上就是我今晚闲的没事翻大叔 W10E 垃圾堆事件得出的东西,在此作个分享,不过这显然没啥用(
如果那些顽固不化的魔改 cca 的国外制作者能修掉这些 bug 该多好((
我估计他们就没几个人知道这些简单的东西怎么修吧(((
Moonstruck Blossom
个人网站:dasasdhba.github.io

98

主题

1778

回帖

12

精华

超级版主

经验
11186
硬币
1504 枚

赞助用户永吧十五周年倒计时海报勋章第三届MW杯冠军第十一届MW杯四强PK!MF3 冠军PK!MF6 亚军PK!MF5 季军PK!MF4 殿军综合发挥奖最佳人气奖欢乐演员欢乐演员人气之王欢乐演员

发表于 2021-6-20 02:04:10 | 显示全部楼层
支持一个,不过真的有人对w10e的某些奇怪的“特性”有执念吗(
就算有,估计影响也轻于鸿毛吧(
自己制作的游戏The Frontiers 点击进入
您需要登录后才可以回帖 登录 | 创建账户

本版积分规则