我正在开发一款游戏使用中碰到的问题和大家分享一下,解决办法未必是最好的,给大家提供一个思路,如果有更好的思路大家多多交流。
文件我已经上传感兴趣或者需要的朋友可以下载
Unity3d插件TopDownEngine踩坑 - 精确控制DamageOnTouch造成伤害对象的数量丨MGameBox丨爱发电 (afdian.net)
先说结论,我目前如果原封不动的使用这个组件在面对敌人密集的时候不能很好的控制子弹到底对多少敌人造成伤害后才销毁自己,这导致子弹造成了过多的伤害,我只想对一个敌人造成伤害但是他对飞行轨迹内的所有敌人造成伤害,我使用他内部基于生命值每次击中扣自己血的机制也不行。单独写一个继承他的脚本直接指定攻击敌人数量上限解决的。
DamageOnTouch这个组件是TopDownEngine我目前使用中知道的最主要实际造成伤害的组件,顾名思义就是接触到对象后造成伤害
这里我就不过多赘述了,大家看看都知道咋回事。
这个组件主要就是在碰撞发生时对符合条件的层内的(TopDownEngine主要是靠层来区分对象类型)的对象造成伤害,并可以设置对对象造成伤害后,对自身挂载的生命组件造成指定伤害以达到销毁自身的目的,并且可以设置配套的MMFeedback反馈播放死亡效果,比如声效爆炸特效,这里还需要设置死亡销毁延迟以保证这个效果能够播放完毕。
我对这个插件并不是特别了解,只是用着还算顺手且一些设计思路值得学习,至此我觉得这个坑就在于这个死亡延迟销毁以及在极短时间内比如一帧内碰到了很多敌人导致他的扣血有些问题。
开始我没在意后来觉得有必要实际试验一下。
我正在为游戏加入穿甲弹机制,拿6个立方体测试
我设置炮弹自身血量为3每击中1个扣1,应该是击中三个以后就不会再造成伤害,但是实际上还是传透所有对象了
我换成自己修改过的脚本并调整碰撞上限为3,设置好碰撞层以后就可以完美解决了
另外为了避免出现造成3次伤害后继续往后飞行的情况,虽然此时已经不会造成伤害但是还是会往后穿过对象显得不自然,所以加了个Bool变量控制是否达到上线后立即禁用自身