制作一款打飞机游戏20:敌人被击中时的视觉效果
-
碰撞检测问题:
子弹与飞船的碰撞检测存在数学问题,特别是坐标偏移量不一致。问题根源在于x scroll
值为浮点数,导致非对称的加减运算结果。解决方案是将x scroll
值向下取整,确保碰撞检测的对称性。 -
敌人碰撞与行为:
引入敌人后,发现敌人与子弹的碰撞检测也存在问题,同样通过调整坐标偏移量解决。需要统一碰撞盒逻辑,减少函数参数,提高代码简洁性。存储敌人数据的必要性,包括动画、碰撞盒大小等信息。
-
敌人被击中时的视觉效果:
实现了敌人被击中时的闪烁效果,通过调整调色板实现颜色变化。 -
爆炸效果(Splash Effect):
子弹击中敌人时的爆炸效果,通过动画帧实现。延迟爆炸效果的出现时间,使其与子弹消失同步。 -
敌人生命值与爆炸:
为敌人添加了生命值属性,当生命值降至零时敌人爆炸。实现了随机生成敌人的功能。
for s in all(splash) do mspr(s.sani[flr(s.si)],s.x,s.y)--pset(s.x,s.y,8)end
for e in all(enemies) dofor s in all(shots) doif col(flr(xscroll+s.x-3),flr(s.y),8,16,flr(xscroll+e.x-7),flr(e.y-7),16,16) thene.flash=2del(shots,s)add(splash,{x=s.x,y=s.y+4, sani={23,23,24,25,26},si=0 })e.hp-=1if e.hp<=0 thendel(enemies,e)explode(e.x,e.y)end endendend
function dosplash()for s in all(splash) dos.si+=1s.si=max(s.si,1) if flr(s.si)>#s.sani thendel(splash,s)endend
end