Godot游戏练习01-第7节-添加敌人
下班感觉身体被掏空, 时间也少得可怜, 做不了多少东西, 每天向前拱一点吧! 加油!我们已经实现了多人玩家移动同步, 射击同步, 子弹的生成与同步, 但是没有东西可以打, 接下来实现一个靶子吧敌人像素资源Aseprite启动, 涂一个脏包, 完毕!导出png, 导入Godot敌人场景和之前一样, 创建敌人场景res://entities/enemy/enemy.tscn, 根节点为CharacterBody2D, 添加Sprite2D显示资源, 添加CollisionShape2D处理移动碰撞(蓝色碰撞体)新增的Area2D用于处理子弹检测(紫色碰撞体), 最后的MultiplayerSynchronizer用于同步敌人的初始化位置这里可以看到两个碰撞体的大小设置不同, 一般来说我们在游戏开发中遵循以下规则:对于移动碰撞可以稍微小一些, 允许少许重叠, 减少玩家被卡住的概率对于伤害检测可以稍微宽松一些, 将擦边的情况也算作击中, 增加玩家的体验总之, 在合理的范围内, 要让游戏尽可能玩起来舒服一点对于伤害检测的Area2D的碰撞层, 我们取消所有Layer的选中, Mask仅勾选Bullet所属的层(我定义为9层), 表示该Area2D不触发其他碰撞体的事件, 仅检测来自Bullet层的碰撞事件选中Enemy根节点, 在右侧Groups栏中, 创建一个group, 取名enemy, 意味着所有敌人实例都属于enemy分组注意: 多人游戏中, 仅服务器(authority)来处理真正的碰撞事件, 处理场景销毁, Client Peer仅负责同步展示, 所以事件监听仅在authority peer执行以下为Enemy脚本extends CharacterBody2D var current_health : int 5 onready var area_2d: Area2D $Area2D func _ready() - void: if is_multiplayer_authority(): area_2d.area_entered.connect(_on_area_entered) func _handle_hit() - void: current_health - 1 if current_health 0: queue_free() func _on_area_entered(area: Area2D) - void: if not area.owner is Bullet: return var bullet : area.owner as Bullet bullet.register_collision() _handle_hit()子弹的碰撞检测在Enemy脚本中已经写好了碰撞检测逻辑, 如果碰撞体所属场景不是Bullet类型, 则不处理, 否则让子弹实例处理碰撞事件, 自身也扣减生命值, 若生命值不再大于0, 则释放自身在子弹场景中, 我们需要新增Area2D, 让Enemy的Area2D能检测到, 子弹的Area2D碰撞设置与Enemy相反, 仅在Layer勾选9层(Bullet层), 取消Mask所有选中, 表示仅触发第9层的其他碰撞体事件, 不检测任何碰撞事件最后是子弹碰撞的处理,register_collision中简单释放自身实例敌人的生成来到Main场景中完成以下任务敌人每间隔一段时间随机生成, 位置随机敌人生成同步, 场景生成同步, 初始位置同步在MultiplayerSynchronizer的自动生成列表中新增enemy.tscn, 并且在start中判断, 若是authority, 则开始生成敌人逻辑生成敌人暂时简单实现, 无线循环生成, 每次间隔随机时间(1 ~ 6秒), 每次生成在随机位置(依据设计尺寸计算)看看效果今天比较顺利, 一次跑起来敌人的生成, 子弹的生成, 碰撞处理, 多人同步, 都完美运行

相关新闻

网格自适应实战 | 攻克超弹性体大变形不收敛难题

网格自适应实战 | 攻克超弹性体大变形不收敛难题

1. 从一次仿真“翻车”说起:当橡胶压缩遇上网格扭曲 我记得很清楚,那是我接手的一个橡胶密封圈设计项目。客户要求模拟这个O型圈在安装槽里被压扁超过60%厚度的过程,看看接触压力和应力分布。听起来是个常规的非线性问题,对吧&…

2026/7/2 21:26:15 阅读更多 →
用evo可视化你的SLAM轨迹:5种让论文图表更专业的技巧

用evo可视化你的SLAM轨迹:5种让论文图表更专业的技巧

用evo雕琢你的SLAM轨迹:5个让学术图表脱颖而出的高阶技巧 在SLAM研究领域,一个算法的优劣,往往在论文评审人或项目评审专家看到图表的第一眼,就已经有了初步的判断。我们花费大量时间调参、优化后端、处理回环,最终产出…

2026/7/2 20:22:48 阅读更多 →
RocketMQ消息查询实战:如何用Message Id秒级定位问题消息(附排查脚本)

RocketMQ消息查询实战:如何用Message Id秒级定位问题消息(附排查脚本)

RocketMQ消息查询实战:如何用Message Id秒级定位问题消息(附排查脚本) 当线上消息队列出现积压、丢失或者消费异常时,那种感觉就像在黑暗的房间里寻找一根针。日志里只有孤零零的消息ID,业务链路中断,告警响…

2026/7/3 16:35:54 阅读更多 →

最新新闻

数据迁移双写校验:两边都写成功,不代表数据一致

数据迁移双写校验:两边都写成功,不代表数据一致

数据迁移双写校验:两边都写成功,不代表数据一致 大规模数据迁移中,双写是常见过渡方案。旧库写一份,新库写一份,等校验通过后切流。听起来稳,但双写成功不等于数据一致。写入顺序、重试、幂等、字段转换、异…

2026/7/3 16:59:37 阅读更多 →
《Vue3 从入门到大神20篇》环境变量与跨域处理 —— Vite 的配置秘籍

《Vue3 从入门到大神20篇》环境变量与跨域处理 —— Vite 的配置秘籍

前言在本地开发时,你的接口请求可能是这样的:axios.get(http://192.168.1.100:8080/api/users)但部署到生产环境后,后端地址变成了:https://api.example.com/api/users如果你把 IP 和端口硬编码在代码里,那每次部署都要…

2026/7/3 16:57:36 阅读更多 →
PIC18F85K22驱动WS2812实现动态光效系统

PIC18F85K22驱动WS2812实现动态光效系统

1. 项目概述:用WS2812与PIC18F85K22打造动态光效系统这个项目本质上是通过PIC18F85K22单片机驱动WS2812智能LED灯带,实现可编程的动态光效。WS2812作为集成了控制电路的三原色LED,每个像素点都能独立显示1600万种颜色,而PIC18F85K…

2026/7/3 16:50:52 阅读更多 →
SQL注入漏洞复现:从原理到实战,以红帆iOffice.net为例

SQL注入漏洞复现:从原理到实战,以红帆iOffice.net为例

1. 项目概述:一次典型的SQL注入漏洞复现之旅最近在整理内部安全审计的案例库,翻到了一个挺有意思的案例,是关于红帆iOffice.net办公系统的。这个系统在不少企事业单位里都有部署,算是比较常见。当时我们通过常规的资产梳理和漏洞扫…

2026/7/3 16:48:42 阅读更多 →
AI智能体与本地大模型集成:Hermes+Codex自动化工作流部署指南

AI智能体与本地大模型集成:Hermes+Codex自动化工作流部署指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 1. 先搞清楚 Hermes 和 Codex 到底是什么,以及它们能一起做什么 看到“赛博牛马连续工作11小时”这个标题,…

2026/7/3 16:46:39 阅读更多 →
STM32L152ZD与MC74HC165A的工业级开关量采集方案

STM32L152ZD与MC74HC165A的工业级开关量采集方案

1. 为什么需要MC74HC165A与STM32L152ZD的组合 在工业控制和嵌入式系统设计中,我们经常遇到需要监控大量开关量信号的场景。传统做法是为每个输入信号分配一个GPIO引脚,这在8位或16位MCU时代会迅速耗尽宝贵的引脚资源。MC74HC165A这款8位并行输入/串行输出…

2026/7/3 16:42:38 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻