Skip to content
Development
Skill

/godot-spawn-system

Godot 4 怪物生成系统,包含波次生成、生成点管理、等级驱动配置和掉落机制。

BOOST
From plugin
alphaagent
10419 skills
Install
$ npx -y skills add 925236118/AlphaAgent --skill godot-spawn-system --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/godot-spawn-system

Context preview

The summary Claude sees to decide when to auto-load this skill.

Godot 4 怪物生成系统,包含波次生成、生成点管理、等级驱动配置和掉落机制。

SKILL.md

godot-spawn-system.SKILL.md
name: godot-spawn-system
description: Godot 4 怪物生成系统,包含波次生成、生成点管理、等级驱动配置和掉落机制。

Godot 怪物生成系统

概述

怪物系统包含怪物生成、寻路 AI、状态机和掉落机制。采用等级驱动的波次生成,根据玩家等级动态调整怪物类型和生成概率。

1. 怪物类型

1.1 僵尸类型枚举

# 僵尸类型枚举
enum Type {
    Zombie,      # 普通僵尸
    AglieZombie, # 敏捷僵尸
    ZombieKing   # 僵尸王
}

1.2 怪物属性表

| 类型 | 血量 | 移动速度 | 特殊 | |------|------|----------|------| | Zombie | 100 | 100 | 默认类型 | | AglieZombie | 100 | 150 | 更快的移动速度 | | ZombieKing | 100 | 100 | 有血条显示,100% 掉落 |

2. 生成点系统

2.1 地图配置

# 战斗地图类,管理生成点
class_name FightMap
extends Node2D

@export_group("Zombie Generater Enable")
@export var up_enable: bool = false
@export var left_enable: bool = false
@export var right_enable: bool = false
@export var down_enable: bool = false

@export_group("Zombie Generater Markers")
@export var up_markers_container: Node2D
@export var left_markers_container: Node2D
@export var right_markers_container: Node2D
@export var down_markers_container: Node2D

func get_zombie_generater_markers() -> Array[Marker2D]:
    var result: Array[Marker2D] = []
    if up_enable:
        result.append_array(up_markers_container.get_children())
    if left_enable:
        result.append_array(left_markers_container.get_children())
    if right_enable:
        result.append_array(right_markers_container.get_children())
    if down_enable:
        result.append_array(down_markers_container.get_children())
    return result

2.2 场景结构

FightMap
├── UpMarkers (Node2D)
│   └── Marker2D × N
├── LeftMarkers (Node2D)
│   └── Marker2D × N
├── RightMarkers (Node2D)
│   └── Marker2D × N
└── DownMarkers (Node2D)
    └── Marker2D × N

3. 生成波次机制

3.1 基于等级的生成配置

var generate_zombie_with_level = [
    {"zombie": 0.75, "king": 0.5, "king_time": 16},
    {"zombie": 0.30, "king": 1, "king_time": 5},  # 25级:僵尸王必出
]

| 字段 | 说明 | |------|------| | `zombie` | 普通僵尸生成概率(1 - zombie = 敏捷僵尸概率) | | `king` | 僵尸王生成概率权重 | | `king_time` | 僵尸王生成间隔(秒) |

4. 生成逻辑

4.1 定时器生成

func _on_generate_zombie_timer_timeout():
    if not zombie_generate_enable:
        return

    var zombie_markers = current_fight_map.get_zombie_generater_markers()
    var rand_zombie: float = randf()

    if can_generate_zombie_king and rand_zombie < GameData.generate_zombie_with_level[GameData.level].king:
        can_generate_zombie_king = false
        generate_zombie_king_timer.wait_time = GameData.generate_zombie_with_level[GameData.level].king_time
        generate_zombie_king_timer.start()
        zombie_packed_scene = ZOMBIE_KING
        fight_ui.warn_zombie_king()
    else:
        rand_zombie = randf()
        if rand_zombie < GameData.generate_zombie_with_level[GameData.level].zombie:
            zombie_packed_scene = ZOMBIE
        else:
            zombie_packed_scene = AGILE_ZOMBIE

    var zombie: Zombie = zombie_packed_scene.instantiate()
    zombie.global_position = zombie_markers.pick_random().global_position + random_pos
    zombie.died.connect(on_zombie_died)
    enermies.add_child(zombie)

5. 僵尸 AI 寻路

5.1 导航寻路

func _physics_process(_delta):
    if not is_died and not is_stun:
        var player := get_tree().get_first_node_in_group("Player") as Player
        navigation_agent_2d.target_position = player.global_position
        var next_pos = navigation_agent_2d.get_next_path_position()
        var new_velocity = global_position.direction_to(next_pos) * SPEED
        navigation_agent_2d.set_velocity(new_velocity)
        await navigation_agent_2d.velocity_computed
        move_and_slide()

5.2 状态机

enum State {
    Walk,   # 行走
    Stun,   # 眩晕
    Die     # 死亡
}

func die():
    animation_tree_state_machine.travel("Die")
    state_machine.change_state("Die")
    died.emit(type, global_position)

6. 死亡和掉落系统

6.1 掉落率配置

var zombie_drop_bullet_gift = {
    "zombie": 0.05,        # 普通僵尸:5% 掉落
    "aglie_zombie": 0.2,   # 敏捷僵尸:20% 掉落
    "zombie_king": 1       # 僵尸王:100% 掉落
}

7. 设计模式分析

| 模式 | 应用场景 | |------|----------| | **观察者模式** | 僵尸死亡通过 `died` 信号通知 | | **状态机模式** | 僵尸使用 `StateMachine` 处理状态 | | **对象池模式** | 通过 `instantiate()` 复用僵尸场景 | | **导航系统** | 使用 `NavigationAgent2D` 实现自动寻路 | | **工厂模式** | 根据概率和等级动态选择僵尸类型 |

Read more
Ships withalphaagent

为Godot引擎编辑器开发的Ai Agent插件

Get the whole plugin

Other skills on alphaagent.

godot-tscn-format
Skill

godot-tscn-format

Godot 4.x .tscn 场景文件纯文本格式规范与 AI 操作指南 — 文件结构、资源引用、 Transform 变换、属性值格式、信号连接,以及 AI 直接读写 .tscn 文件的操作方法。