制作一款打飞机游戏20:敌人被击中时的视觉效果

  1. 碰撞检测问题‌:

    子弹与飞船的碰撞检测存在数学问题,特别是坐标偏移量不一致。问题根源在于x scroll值为浮点数,导致非对称的加减运算结果。解决方案是将x scroll值向下取整,确保碰撞检测的对称性。

  2. 敌人碰撞与行为‌:

    引入敌人后,发现敌人与子弹的碰撞检测也存在问题,同样通过调整坐标偏移量解决。需要统一碰撞盒逻辑,减少函数参数,提高代码简洁性。存储敌人数据的必要性,包括动画、碰撞盒大小等信息。

  1. 敌人被击中时的视觉效果‌:

    实现了敌人被击中时的闪烁效果,通过调整调色板实现颜色变化。

  2. ‌**爆炸效果(Splash Effect)**‌:

    子弹击中敌人时的爆炸效果,通过动画帧实现。延迟爆炸效果的出现时间,使其与子弹消失同步。

  3. 敌人生命值与爆炸‌:

    为敌人添加了生命值属性,当生命值降至零时敌人爆炸。实现了随机生成敌人的功能。

    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-=1

    复制代码
     if 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

相关推荐
D***t1312 小时前
云服务在在线游戏中的架构
游戏·架构
源代码•宸2 小时前
GoLang写一个简单版生命游戏模拟器
经验分享·笔记·学习·游戏·golang
Y***K4349 小时前
C在游戏中的Godot
游戏·游戏引擎·godot
8***B11 小时前
C在游戏中的Stride
游戏
薛慕昭13 小时前
嵌入式 C 语言猜大小游戏设计与实现
c语言·游戏
AA陈超15 小时前
从0开始学习 **Lyra Starter Game** 项目
c++·笔记·学习·游戏·ue5·lyra
q***T58316 小时前
C++在游戏中的Unreal Engine
c++·游戏·虚幻
u***09641 天前
C在游戏中的Urho3D
游戏
O***p6041 天前
C++在游戏中的Ogre3D
游戏·3d·ogre
1***81531 天前
C在游戏中的场景管理
java·jvm·游戏