开发者日志04: 武器系统

10/2513 浏览综合
核心功能
完成了完整的Player-Weapon-Bullet自动攻击系统。包括敌人检测、自动瞄准、子弹发射和命中判定四个主要模块。
技术实现
碰撞层架构[表情_微笑]
采用了标准化的碰撞层配置:Layer 2用于Player,Layer 4用于Enemy检测,Layer 8用于Hitbox判定。通过Area2D的monitoring/monitorable机制实现单向和双向检测。Player的EnemyDetector使用CircleShape2D,半径根据武器攻击范围动态调整。
瞄准系统[表情_酷]
武器通过`look()`方法实时追踪目标,使用`aim_position`作为瞄准点而非敌人脚下坐标,提升视觉准确性。处理了sprite翻转和角度偏移,通过`update_scale()`和`update_idle_angle()`确保武器在各个方向的正确朝向。
子弹追踪
实现了基于lerp的轻微追踪算法。子弹发射后保持初始方向,通过`direction.lerp(desired_direction, turn_amount)`进行平滑修正。`tracking_turn_speed`设为3.0,在保持弹道真实感和降低空枪率之间取得平衡。
命中判定
采用双向通知机制:Hurtbox检测到Hitbox后,同时触发`hitbox_detected`和`hitbox.detected`两个信号。前者通知被击中实体进行伤害计算,后者通知攻击方播放命中反馈。这种设计解耦了攻击和受击逻辑。
后续规划
- 扩展武器类型系统,支持不同攻击模式
- 实现武器升级机制
- 引入对象池优化子弹实例化
4
1