制作一款打飞机游戏18:敌人子弹

今天,我们将对这个敌人做更多的事情,让它移动得更多,更接近于实际的游戏体验。我们还会让它发射子弹。

敌人行为设计

  • ‌初步设想‌:首先,我们要明确,我们现在做的都是初步的工作,只是创造一个敌人来测试游戏中的元素和可能遇到的问题。
  • ‌多行为敌人‌:我们可能想要有多个敌人,每个敌人都有不同的行为。为此,我们可以为敌人设置一个"大脑"变量,用来标识它的行为类型。
  • ‌年龄变量‌:此外,我还想为敌人增加一个"年龄"属性,用H来表示。这样,我们可以根据敌人的年龄来决定它的行为。

实现敌人动画

  • ‌动画实现‌:在实现敌人的动画时,我们遇到了一些问题,比如如何优雅地处理敌人的移动和停留。
  • ‌代码优化‌:我们意识到,游戏中有很多相似的系统可以合并,以提高代码的重用性。
  • ‌调试过程‌:在调试过程中,我们发现了一些问题,比如敌人的移动速度、停留时间等,都需要不断调整以达到最佳效果。

子弹系统

  • ‌子弹创建‌:接下来,我们为敌人创建了子弹系统。首先,我们需要创建一个子弹的精灵(sprite)。
  • ‌代码重用‌:为了代码的重用性,我们尝试将发射子弹的代码抽象出来,使其既可以用于敌人子弹,也可以用于玩家子弹。

敌人生成与销毁

  • ‌敌人生成‌:为了让游戏更加有趣,我们决定让敌人不断生成。为此,我们编写了一个函数来定时生成新的敌人。

  • ‌随机生成‌:为了让游戏更具挑战性,我们尝试让敌人在随机位置生成。然而,这样做也带来了一些问题,比如敌人可能会重叠或出现在不合逻辑的位置。

  • ‌敌人销毁‌:当敌人飞出屏幕或达到某种条件时,我们需要将其销毁。为此,我们编写了相应的逻辑来处理敌人的销毁。

    function dobuls(arr)
    for s in all(arr) do
    s.x+=s.sx
    s.y+=s.sy
    s.si+=0.5

    复制代码
    if flr(s.si)>#s.sani then
     s.si=1
    end
    
    if s.y<-16 or s.y>130 then
     del(arr,s)
    end

    end
    end

相关推荐
神仙别闹19 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
河南花仙子科技2 天前
企业私域死气沉沉?小游戏盘活用户活跃度
游戏
Lonely丶墨轩2 天前
用 Vue + Spring Boot + Python 做一个 AI 双人海龟汤游戏:从出题、联机到自动审稿等核心技术设计与实现
spring boot·后端·游戏
avi91112 天前
Unity 介绍一个开源免费图片工具 Tropy 科研.org推荐 - 代表作
游戏·开源·aigc·tropy·图片管理
小智GEO观察2 天前
显卡哪些是一线品牌:高端AI算力与4K/8K游戏市场品牌格局观察
人工智能·游戏
梦想平凡2 天前
棋牌游戏技术实战(一):用 Node.js 实现房间消息队列、请求幂等与断线恢复
游戏·node.js
郝学胜_神的一滴3 天前
游戏引擎原理与实践 04:拆解引擎基础系统与内存管理
c++·游戏
Hello_Pyhx3 天前
DLSS5-Swapper 配置教程:核对游戏API、选择路线与排查F8无响应
游戏
Martina_03213 天前
山谷地形下雨后湿痕总往坡上爬?用6步检查高度场、流向遮罩与分区加载
人工智能·游戏·数学建模·3d·自然语言处理·aigc·关卡设计
特立独行的猫a3 天前
用仓颉语言给娃写了个打字练习游戏:cj-tauri 项目实战
游戏·ui·框架·tauri·仓颉·cangjie·cj-tauri