之前闲得无聊,突发奇想就尝试在 SMBX 38A 上制作马里奥奥德赛里的使用帽子附身敌人的脚本。虽说这个之前在 38A 上早已有老外尝试做过了,但看起来似乎还是有那么一点不尽人意的样子。所以,在这里,我打算做出一个更忠实于原作的奥德赛脚本。
当然,说“更忠实于原作”其实也有些牵强。因为我不可能可以把原作中的所有特性和所有限制都给还原出来。比如在原作中,马里奥是无法附身刺刺龟这类敌人的,但是在这里嘛……感觉如果不能直接丢一个帽子附身上去感觉还是太奇怪了。
这个脚本目前尚处于开发阶段中,目前也没有任何实例关卡供大家测试或游玩。在这里我只会放出目前完成的一部分内容的动图,顺带附上特性介绍。如果有什么建议或者想法,欢迎在本帖提出!
目前已有 Demo 版,欢迎测试并反馈你遇到的任何问题。
百度盘(提取码:2333)
喝了盘
凯皮
目前凯皮可以被马里奥从手中丢出去。和原作一样,凯皮是直线飞行,飞行一段距离后就会回到马里奥身边。同样,凯皮在遇到砖块时会被弹回到马里奥身边,凯皮在击打到问号砖或藏有物品的砖头砖块时,这些砖块会被顶起,顶出里面藏有的物品。而凯皮也可以直接击碎没有藏任何物品的砖头砖块。马里奥在发射凯皮时可以通过按上键来将凯皮向上斜向发射,按下键也可以将其向下斜向发射(只不过触发这个动作有点难,因为直接按下键马里奥会下蹲)。在发射出去后按住 Alt Run 键,凯皮会悬停在发射的最远处,此时马里奥可以踩到凯皮上面,从而跳到更高的地方。在此期间若玩家松开 Alt Run 键,凯皮还会和往常一样飞回到马里奥身边。另外,凯皮也可以帮助马里奥拿取金币。在凯皮被发射出去,并要回到马里奥身边时,在回来的期间为了防止被砖块卡住,凯皮可以直接穿过任何砖块回到马里奥身边。不过在此期间凯皮仍然对敌人具有攻击判定,但无法附身敌人(只能将可以被附身的敌人打倒),我也不清楚是否应该保留这样的攻击判定……另外原作的将凯皮旋转甩出去的动作我没有做,一是因为太麻烦,二是因为这样的动作在 2D 游戏中显得过于强力,可能会破坏游戏的平衡性。当然,如果你有什么好的处理建议,可以在本帖和我说。
炮弹大仙刺客
马里奥将凯皮扔到炮弹身上时可以直接附身炮弹。在原作,炮弹只能在一个水平面上飞行。但是在这里,我做了一些调整,让被附身的炮弹可以360°无死角飞行!当然,想要控制好这个炮弹的运动轨迹也是需要考验操作的。玩家需要通过按上键或者下键来控制好炮弹的飞行角度,按左右键来控制炮弹的飞行速度。关于速度的控制,举个例子:如果玩家此时操作的炮弹是向右飞行,那么按右键可以加速炮弹的飞行速度,而按左键则会降低炮弹的飞行速度。如果一直按住左键让炮弹的速度变为0,炮弹则会转向向左飞行。反之亦然。而且如果炮弹的飞行速度低于一定程度,那么炮弹会自动加速,也就是说炮弹不可能有停下的时候。目前被玩家附身的炮弹不能直接伤害敌人,如果被敌人攻击到马里奥会直接受伤并变回原形,炮弹消失。若玩家将炮弹撞向砖块则会爆炸,与此同时玩家会恢复原状。炮弹爆炸时可以炸碎周围的砖块或炸出砖块里的物品(目前还不能炸死周围的敌人……)。如果玩家直接撞向场景边界,炮弹会直接消失,马里奥会自动变回原形。此外,如果想解除附身,需要按 Alt Jump 键(也就是平时旋转跳用的按键,需要注意的是在这个脚本里马里奥无法旋转跳)。还有一点,就是这个炮弹一旦接触到水就会自动报废,马里奥会直接变回原形(什么劣质炮弹,我要附身炮弹大仙!!!),说不定将来可以来一个只能在水中飞行,出水就报废的水雷啥的……另外,如果附身到一定时间炮弹仍然没有爆炸或报废的话,它会开始自爆,在爆炸前会有五秒钟的预警(身体会变红闪烁,闪烁和发出警告音的频率会越来越快)。目前炮弹能飞行的时长还没有正式定好,到底应该是30秒还是20秒还是别的时长,我还真的没有主意……有谁对此有想法吗?
大炮弹大仙刺客
马里奥也可以通过凯皮附身到大炮弹身上。附身后的大炮弹的操作方式和机制和小炮弹差不多。但是大炮弹比小炮弹更强力,大炮弹可以连续撞碎没有隐藏任何物品的砖头砖块而不爆炸,而大炮弹也有着比小炮弹更大的爆炸范围(但是目前还是无法炸死周围的敌人……),并且大炮弹可以无视敌人的攻击,直接将敌人撞死。只不过,大炮弹遇到水依旧会……报废。另外,由于 38A 本身不方便调整碰撞箱使其旋转,因此无论大炮弹的图像如何旋转,它的碰撞箱的角度都不会发生改变,因此有的时候的碰撞判定可能有点怪怪的……这个我也暂时没辙了。
慢慢龟
马里奥附身慢慢龟后,可以像马里奥一样正常行走和跳跃。在水中也可以正常游泳。按下键可以缩进龟壳中(尽管并没有什么实际效果,因为无论慢慢龟是否缩进龟壳中,慢慢龟的碰撞箱的高度都是32像素,和被附身前的碰撞箱一致)。如果在有一定初速度的情况下按下键就可以缩进龟壳中进行冲刺。要注意的是,这个龟壳冲刺的动作是我完全重写的,并没有套用游戏里自带的龟壳装。这里的龟壳冲刺的速度要求要更低,而且更便于控制(因为只有按下键才能触发冲刺动作)。只不过由于游戏本身的机制,龟壳在冲刺时尽量不要按反方向键,否则可能会导致龟壳停下。龟壳冲刺时可以撞死经过的敌人,也可以撞碎普通的砖头砖块、砸出藏有物品的砖块内的物品——和普通龟壳的性能几乎无异。而且玩家在斜坡上下滑的时候也能触发冲刺动作,也可以顺着向上的斜坡滑出去(虽说可能没有 SMBX 里自带的龟壳飞出斜坡的高度那么离谱了……)另外,没有被马里奥附身慢慢龟就算被踩进龟壳中,也可以正常附身。而如果龟壳中没有慢慢龟,则无法附身,龟壳会被扔出去的凯皮直接打飞。
钢盔龟
钢盔龟在缩进壳内冲刺的性能几乎和慢慢龟无异。但是钢盔龟的跳跃高度没有马里奥和被附身的慢慢龟跳得高(正常情况下大概只能跳到两格半的高度)。此外,若钢盔龟落入水中,则会不受玩家的控制直接垂直沉入水中。钢盔龟最大的特点是头顶防火以及可以顶开从上方攻击的敌人(如防御从天而降的吞食花的火球和弹开从天而降的咚咚)——如同玩家头上戴上了钢盔龟的壳。但需要注意的是,如果火焰是从侧面攻击过来的,被附身的钢盔龟仍然会受伤……
刺刺龟
凯皮——!!!你还好吗?!刺刺龟在缩进壳内冲刺的性能几乎和慢慢龟无异。和钢盔龟一样的是,刺刺龟的跳跃高度也受到了限制(只能跳跃到和钢盔龟的跳跃一样的高度),并且跳跃时是缩成一个刺球旋转跳跃。此外,若刺刺龟落入水中,则会缩成一个刺球自动上浮到水面上(这是在尝试还原新马 DS 里刺刺龟的遇到水会缩成刺球浮在水面上的设定)。不用担心,玩家可以按下键让浮在水面上的刺刺龟下落进水面中,当然若此时松开下键则会再次上浮到水面上。刺刺龟和慢慢龟以及钢盔龟最显著的一个区别是,刺刺龟可以用壳上的刺直接扎死从上方袭击的敌人(当然不能防火球、锤子这类投掷物……),这使得刺刺龟几乎是一个无敌的存在(所以才要限制跳跃高度啊……)。
钢盔龟和刺刺龟在水下的特性
之前我们已经了解过,钢盔龟入水即沉,而刺刺龟可以在水中漂浮。可除此之外,这些王八可否还有其它的特性呢……?答案当然是——有!首先,让我们先安排一下实验场地——你们在笑什么?那些只是卤鸡外形的水下喷气机,不要想太多了!钢盔龟虽说在水中会不受玩家控制而下沉,但是钢盔龟在水下的地面上是可以正常行走的,甚至可以在水下的地面上跳起一点高度(若按上键跳跃则会跳得更高)。如果在水中遇到向上的激流,钢盔龟是可以直接无视激流下沉的。在地面上时,若一直按住方向键前进,那么钢盔龟可以在水中逆流而行(如果在激流中前进的时候松开方向键或者跳跃,则还是会被激流冲回去)。而刺刺龟在水中时,则会因为自身的浮力很大,而抵御向下的激流向上继续上浮(不过需要按上键才能逆流上浮)。如果借助这些特性的话,能不能玩出一些有意思的设计出来呢……?
锤子兄弟
由于锤子兄弟的头上戴有头盔,马里奥必须要把锤子兄弟头上的头盔打掉才能附身锤子龟。这里的锤子兄弟的AI是重写过的,我基于原先 Slash-18 写的锤子兄弟 AI (带有攻击动画)的基础上增加了锤子兄弟上下砖块的 AI,虽说多只锤子兄弟在场时似乎并不能很好地配合……咳咳,跑题了。在玩家附身锤子兄弟后,锤子兄弟行走时是一蹦一跳的(类似于穿上靴子)。按住 Run 键会让附身的锤子兄弟一直保持拿锤子的姿势,松开 Run 键则是将手中的锤子投掷出去。手中持有锤子时,玩家无法转向,只能将手中的锤子投掷出去后才能转向。而玩家投掷出的锤子的距离和玩家先前的按键时长有关,按键时长越长,锤子飞出的就越远(当然是有上限的,按键只要保持按住 12 帧就能到达上限了)。锤子的飞行距离也和玩家的横向、纵向速度有一定关系,跑得越快,锤子飞的就越远,跳跃力度(也就是纵向速度)越大,锤子飞的就越高。在投掷锤子时如果按住上键,玩家的锤子还可以飞得更高(但与此同时会牺牲锤子横向飞出的距离)。另外,锤子每次发射出来的轨迹也并非完全固定,就算两次的按键时长相同——锤子在投掷出去后的速度会在按键时长的基础上增加一定量的随机速度。因为没玩过奥德赛原作,所以这些机制都是我凭着感觉去做的,如果对于被附身的锤子兄弟的机制有更好的想法也欢迎在帖子下方留言~
栗宝宝
过了这么长时间我终于去做栗宝宝的附身了……这里的栗宝宝在被附身后和原作一样,可以通过跳跃踩到别的栗宝宝的头上来进行叠罗汉。借助叠高的栗宝宝塔,玩家可以跳到本来够不到的高处的位置。和原作不同的是,一旦玩家解除附身,栗宝宝塔就会塌掉。为什么呢?第一是因为栗宝宝塔在 2D 游戏里显得威胁性很大,第二是因为……我懒得做(雾)。
另外这次的更新,我取消了玩家在附身敌人后受伤会自动解除附身的设定。也就是说,只要玩家没有挂掉,玩家可以一直保持附身状态(炮弹大仙刺客之类的暂时性的附身除外)。另外,在之前的更新中,我也给马里奥加入了各种各样出自奥德赛里的动作,如踢墙跳、长跳、翻滚、后空翻等,只不过我一直都没有在这里展示,那还是因为……我懒得放(大雾)。
目前我只完成了这些脚本。我的下一步目标可能是做别的敌人的附身,或者做一个示例关卡啥的。当然,由于我还有别的坑在身(当然是TLoD),以及还有别的一些事情需要忙的缘故,这个脚本也不知道什么时候会继续更新,更不知道什么时候会最终完成……如果你对之后的更新有什么想法的话,也欢迎在这个帖子中回复,告诉我你对这个脚本的想法!谢谢!!!