1 Area2D节点
新建2个Area2D节点——Hutrbox和Hitbox,分别给它们CollisionShape2D子节点,作为攻击和被攻击的伤害判定区
2 Hutrbox处理
草场景引入hurtbox场景,打开子场景可编辑,给Hurtbox一个碰撞检测的形状和进入信号。
脚本逻辑更改,把上一节的创建草特效抽取为一个函数create_grass_effect(),hurtbox区域检测到信号,就播放摧毁动画,然后消失
grass.gd
1 | extends Node2D |
3 Hitbox处理
- 同样的方法,先建一个Hitbox
- 因为要检测的碰撞范围是“挥动的剑”,所以使用Marker2D的旋转属性,实现旋转
- 利用父节点特性:子节点会跟着父节点移动,把HitboxPivot作为SwordHitbox的父节点,旋转的时候,Hitbox会绕它的父节点HitboxPivot旋转,借此改变碰撞检测的位置
- 插入进动画轨道

- 优化攻击生效时机,在不同帧插入CollisionShape2D的disable属性

4 物理层优化
项目设置给物理层命名,重新设置所有场景的碰撞层
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 芃狐!





