-
碰撞检测问题:
子弹与飞船的碰撞检测存在数学问题,特别是坐标偏移量不一致。问题根源在于
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) do
for s in all(shots) do
if col(flr(xscroll+s.x-3),flr(s.y),8,16,
flr(xscroll+e.x-7),flr(e.y-7),16,16) then
e.flash=2
del(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 then del(enemies,e) explode(e.x,e.y) end end
end
end
function dosplash()
for s in all(splash) do
s.si+=1
s.si=max(s.si,1)
if flr(s.si)>#s.sani then
del(splash,s)
end
end
end