当前位置: 首页 > news >正文

制作一款打飞机游戏68:地面敌人

敌人系统的扩展

今天,我们要对我们的敌人系统进行大量的扩展。具体来说,我想实现以下几点:

  1. 将敌人与地面关联‌:我希望能够区分敌人是地面的还是空中的。
  2. 调整碰撞设置‌:我想对敌人的碰撞进行一些调整,以便在未来实现更复杂的战斗场景,比如BOSS战。
  3. 实现子弹取消功能‌:在某些情况下,我希望某些敌人能够取消所有属于它的子弹。

编辑敌人属性

首先,我们需要编辑敌人的属性。我计划引入几个新属性:

  • 地面敌人/空中敌人‌:用0表示空中敌人,1表示地面敌人(但后面决定用1表示地面敌人,2表示空中敌人)。
  • 碰撞控制‌:通过数字来控制敌人是否可以被玩家飞船或子弹击中。
  • 子弹取消‌:一个标志位,用于控制当敌人被击毁时,是否取消所有属于它的子弹。

实现细节

在实现了基本的属性设置后,我开始填充现有敌人的数据。这里有一些具体的实现细节:

  • 地面敌人的移动‌:地面敌人需要随着背景移动,并且需要在绘制时位于空中敌人的下方。
  • 碰撞检测‌:地面敌人不应与玩家飞船发生碰撞。
  • 绘制顺序‌:通过分层来控制敌人的绘制顺序,确保地面敌人在空中敌人下方。

碰撞与绘制顺序的调整

在Brain Edit中,我调整了敌人的移动和碰撞检测逻辑,以确保地面敌人正确移动并不与玩家飞船发生碰撞。同时,我修改了绘制顺序,使地面敌人始终位于空中敌人的下方。


合并爆发与扩散模式

接下来,我讨论了如何合并爆发(burst)和扩散(spread)模式,以节省代码空间。通过添加一个类型标志,我们可以在扩散模式中实现爆发的效果,而无需创建单独的模式。


子弹速度调整

我还提到了一个问题:有时我们需要调整子弹的速度,但又不想创建全新的模式。因此,我在扩散模式中添加了一个速度调整功能,允许我们在不改变模式结构的情况下调整子弹的速度。

相关文章:

  • 使用python进行图像处理—像素级操作与图像算术(4)
  • CMake 从 GitHub 下载第三方库并使用
  • 使用python进行图像处理—图像变换(6)
  • 从零手写Java版本的LSM Tree (一):LSM Tree 概述
  • 安宝特方案丨船舶智造AR+AI+作业标准化管理系统解决方案(维保)
  • 用机器学习破解新能源领域的“弃风”难题
  • 深入理解JavaScript设计模式之单例模式
  • Unity中的对象池ObjPool/PoolManager
  • 从零手写Java版本的LSM Tree (三):MemTable 内存表
  • 如何使用CodeRider插件在IDEA中生成代码
  • 写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
  • 189. 轮转数组
  • Django RBAC项目后端实战 - 03 DRF权限控制实现
  • fpga系列 HDL : Microchip FlashPro 导出与烧录FPGA
  • C++八股 —— 单例模式
  • UE5 学习系列(一)创建一个游戏工程
  • 创建型模式-单例模式
  • “扛不住了就排队!”——聊聊消息队列在高并发系统中的那些硬核用途
  • tomcat入门
  • 免费批量抠图工具使用说明
  • 企业产品做哪个网站推广好/软文发布
  • python做网站怎么样/免费b站推广入口2023
  • 考百度指数 某个关键词在某个行业网站上的/怎样创建一个网站
  • 上海网站建设百度推广公司/高端网站建设企业
  • 汕头潮南区/seo百度关键词排名
  • 安阳做网站哪家好/如何做线上推广