制作一款打飞机游戏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

相关推荐
Laravel技术社区1 小时前
用PHP8实现斗地主游戏,实现三带一,三带二,四带二,顺子,王炸功能(第二集)
前端·游戏·php
程序猿阿伟1 天前
《游戏平衡的高阶解法:强化学习主导的参数迭代策略》
游戏
锦瑟弦音1 天前
跑酷游戏开发笔记3 && 游戏开始场景 cocos 3.8.7
javascript·笔记·游戏
Minecraft红客1 天前
C++制作迷宫第一版
c++·游戏·电脑·娱乐
CreasyChan1 天前
3D游戏数学基础指南
游戏·3d·unity·数学基础
神仙别闹2 天前
基于QT(C++)实现的翻金币游戏
c++·qt·游戏
夏鹏今天学习了吗2 天前
【LeetCode热题100(74/100)】跳跃游戏
算法·leetcode·游戏
郝学胜-神的一滴2 天前
使用Qt OpenGL开发俄罗斯方块:从零到一实现经典游戏
c++·qt·程序人生·游戏·设计模式·系统架构·图形渲染
夏鹏今天学习了吗2 天前
【LeetCode热题100(75/100)】跳跃游戏 II
算法·leetcode·游戏
星光一影2 天前
合成植物大战僵尸 安卓原生APP Cocos游戏 支持Sigmob
android·游戏·php·html5·web app