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

制作一款打飞机游戏72:取消功能

子弹取消

今天我想做两件事:一是子弹取消,二是子弹封印。我想同时做这两件事,因为我们已经有了一些基础设置,可以让这些功能实现。

子弹取消是什么?

对于某些敌人,如果我们将它们击倒,那么它们已经射出的所有子弹都会消失。我们已经做了一些设置来实现这一点。

实现过程‌:

  1. 检查敌人属性‌:每个敌人都有一个属性“kank”,如果设置为1,则表示该敌人会取消子弹。
  2. 子弹与敌人的关联‌:我们需要让每颗子弹记住是由哪个敌人发射的。这样,在取消子弹时,我们就能知道哪些子弹需要被取消。
  3. 取消子弹‌:当敌人被击倒时,我们遍历所有子弹,如果子弹的发射者是我们要取消的敌人,那么就让这些子弹消失。
  4. 视觉效果‌:子弹消失时,我们不希望它们只是简单地消失,而是想加入一些视觉效果,比如让子弹变成一个小爆炸或者冲击波。

实现细节‌:

  • 我们为子弹添加了一个属性来记录发射者。
  • 遍历子弹队列,检查每颗子弹的发射者,如果是要取消的敌人,则将其从队列中移除。
  • 为子弹消失添加了冲击波效果,使视觉效果更加生动。
主题二:子弹封印

子弹封印比子弹取消稍微复杂一些。基本思路是:当玩家靠近敌人时,敌人将停止射击。

实现过程‌:

  1. 设置阈值‌:我们需要确定一个距离阈值,当玩家与敌人的距离小于这个阈值时,敌人将停止射击。
  2. 检查距离‌:在敌人射击前,我们检查玩家与敌人的距离,如果距离小于阈值,则不发射子弹。
  3. 视觉反馈‌:为了让玩家知道敌人已经被封印,我们在敌人身上显示一个“X”标记。

实现细节‌:

  • 我们为敌人添加了一个“sealed”属性,用于标记敌人是否被封印。
  • 在敌人射击前,我们计算玩家与敌人的距离,并与阈值进行比较。
  • 如果敌人被封印,我们在绘制敌人时在其身上显示一个红色的“X”标记。
其他内容
  • 声音效果‌:我为敌人被击中时添加了声音效果,但发现多个声音效果会相互干扰,因此我调整了声音的播放逻辑,确保每帧只播放一个声音效果。
  • 技术讨论‌:在最后部分,我讨论了关于使用向量和角度来计算敌人移动方向的问题。虽然使用向量可以简化一些计算,但在复古硬件上,三角函数计算成本较高,因此我选择了更经济的角度计算方法。
http://www.xdnf.cn/news/1026073.html

相关文章:

  • ACL-Net
  • 8.4.1简单选择排序
  • jupyter内核崩溃
  • Unity 接入抖音小游戏二
  • PHP商城源码:构建高效电商平台的利器
  • fastmcp 实现mcp 服务端、客服端案例
  • java集合篇(六) ---- ListIterator 接口
  • 成功案例丨Altair 数字孪生技术助力GEZE打造智能建筑新标杆
  • 我自己动手写了一个MySQL自动化备份脚本,基于docker
  • linux下安装所有用户能共享的anaconda
  • 新型智慧城市综合运行管理平台(城市大脑)解决方案PPT(97页)
  • PHP设计模式实战:微服务架构与事件驱动系统
  • 高性能服务器程序框架知识梳理
  • if的简化书写,提高执行效率
  • STM32外设学习之USB
  • 手搓一个记录复制记录的软件,方便快速找到之前复制内容
  • grubby命令详解
  • Spring Boot的Security安全控制——认识SpringSecurity!
  • LangChain--(2)
  • 【测试开发】函数进阶-纯函数、内置函数、匿名函数、偏函数
  • 梨泛转录组-文献精读145
  • 基于sample_aiisp再创建一路 h264编码流,和jpg的编码流
  • BugKu Web渗透之秋名山车神
  • 高效解决Java内存泄漏问题:方法论与实践指南
  • 解决Avantage 6.0版本以上峰拟合 峰显示不全的问题
  • 2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
  • windows 电脑如何寻找 自己电脑上的 mac 地址
  • Linux cgroup 技术
  • 语法疫苗:SynCode如何为LLM生成装上“防崩溃引擎”
  • 学习笔记:Redis入门