假设某一类型的敌人可能爆炸,液体(血/酸)可能击中附近的物体:玩家,敌人,盒子.
在水果忍者喷溅到背景,这很容易。在这里,它在多个侧面,但不是在Z轴,因为它是一个2D游戏。
有没有一种简单的方法可以在这些物体上产生随机的液体飞溅?
发布于 2018-11-29 23:32:53
不,没有“简单的方法”,主要是因为它将如何工作和它将如何影响游戏是不完全通用的。例如,血击中玩家意味着什么?它能改变雪碧吗?一群分层的精灵?一张小纸条?血液是永久的还是暂时性的?它是累积的,还是只是“血淋淋的还是不流血的”?它击中目标的角度重要吗?如果它没有击中一个目标-球员是否开始在其中留下血淋淋的脚印?等。
如果您想要这样的功能,几乎可以肯定地说,您必须定制它的代码。
我可能要做的是用随机生成的血溅飞沫产生一堆类似粒子的精灵物体,使它们远离源,并使用SKActions或物理使它们远离源。然后我会检查他们是否与任何我希望他们能够交互的屏幕元素发生冲突,当这种情况发生时,我会杀死雪碧,并向血淋淋的物体发送信息,并做我需要做的事情,以便对事件做出反应,使击中的物体看起来像血过,就像把一个“干净”的飞碟换成一个“血腥”的物体。如果雪碧在完成它的动画之前没有击中什么东西,那么我就把它放在它降落的地方。
一个更便宜、更简单的解决方案是使用SpriteKit粒子系统简单地触发一串血液粒子,并在场景中添加一个随机的圆形“血液溅”图像。然后,你只需检查是否有任何东西在这个半径内,如果是,就叫它血。这将需要有足够的血液粒子,使它看起来像任何接近会被溅溅,但它将比跟踪单个粒子和检测碰撞要简单得多。
https://stackoverflow.com/questions/53529229
复制相似问题