SpriteKit中的液体飞溅

时间:2018-11-28 22:44:29

标签: sprite-kit

假设某种类型的敌人可能爆炸,液体(血液/酸)可能击中附近的物体:玩家,敌人,盒子...


在《水果忍者》中,飞溅会变成背景,这很容易。因为它是2D游戏,所以它在多方面,但在Z轴上却没有。


有没有一种简单的方法可以在这些物体上产生随机的液体飞溅?

1 个答案:

答案 0 :(得分:0)

不,没有“简便方法”,主要是因为它的工作方式及其对游戏的影响尚不能完全概括。例如,血液击中玩家意味着什么?它会改变精灵吗?一堆分层的精灵? Spritesheet?血液是永久的还是暂时的?它会积累吗,还是“血腥或不流血”?它击中目标的角度重要吗?如果它没有命中目标该怎么办-穿过它的玩家会开始留下血腥的足迹吗?等等

如果您想要这样的功能,几乎可以肯定,您必须自定义代码。

我可能要做的是生成一堆带有随机生成的血液飞溅精灵的粒子状精灵对象,将它们与源倾斜,并使用SKActions或物理学对其进行动画处理。然后,我将检查它们是否与我希望它们能够与之交互的任何屏幕元素发生冲突,并且在发生这种情况时,我会杀死该精灵并向该流血的事物发送一条消息,并尽我所能为了响应该事件,使命中的对象看起来像流血的一样,就像用“干净的”精灵表替换为“血腥的”对象一样。如果精灵在完成动画之前没有碰到东西,那么我就把它放到它着陆的地方。

一种更便宜,更简单的解决方案是使用SpriteKit粒子系统简单地触发一堆血液粒子,然后向场景中添加随机的圆形“血溅”图像。然后,您只需检查该半径内是否有任何东西,如果是,则将其称为流血的。这将需要有足够的血液颗粒,以使其看起来像任何接近的东西都会被飞溅,但这比跟踪单个颗粒和检测碰撞要简单得多。