con un clic
godot-gameplay-developer
Godot 核心玩法逻辑开发专家,支持自然语言描述自动实现角色控制、物理系统、游戏规则等核心功能
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Godot 核心玩法逻辑开发专家,支持自然语言描述自动实现角色控制、物理系统、游戏规则等核心功能
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Godot技能统一入口,根据用户需求智能选择并调用最适合的Godot子技能,提供15个专业技能的一站式开发体验
为中文开发者提供完整的项目本地化、环境配置和开发工作流指导,确保中英文双语环境下的最佳开发体验
自动使用Context7进行文档研究,当用户需要代码生成、配置步骤或库/API文档时无需明确请求即可自动获取最新信息
GDScript 语法权威指南,提供最新 Godot 4.5 语法规范、最佳实践、缩进规则和代码风格
Godot 资源与动画创建专家,支持自然语言描述自动完成精灵导入、动画配置、特效制作、音效集成等资源工作
提供批量操作Godot节点的能力,支持批量更新属性、重命名、删除和创建节点,大幅提升开发效率
| name | godot-gameplay-developer |
| description | Godot 核心玩法逻辑开发专家,支持自然语言描述自动实现角色控制、物理系统、游戏规则等核心功能 |
重要提示: 本技能的所有代码示例均基于 Godot 4.5 最佳实践,使用 GDScript 语法。 确保在 Godot 4.x 环境中使用,避免与 Godot 3.x 语法混淆。
godot-gameplay-developer 是专门用于开发 Godot 游戏核心玩法的智能化技能,能够根据用户的自然语言描述自动实现角色控制、物理交互、游戏规则、AI 行为等核心游戏机制。
用户: "我想要一个能跳跃、冲刺和二段跳的角色"
系统: 自动实现:
- CharacterBody2D基础控制
- 跳跃物理和二段跳逻辑
- 冲刺技能和冷却系统
- 相应的动画状态机
- 粒子特效集成
用户: "创建一个可以推箱子、拉杠杆的物理谜题"
系统: 智能生成:
- 可推动箱子的物理体
- 杠杆机关机制
- 压力板触发器
- 物理约束和连接
- 谜题完成检测逻辑
用户: "设计一个会巡逻、发现玩家后会追击的守卫AI"
系统: 完整实现:
- 守卫巡逻路径系统
- 视野检测机制
- 追击和丢失目标逻辑
- 警报和协作系统
- AI状态机管理
用户: "做一个三消游戏,包含连击系统和特殊道具"
系统: 全面开发:
- 三消匹配算法
- 连击计数和奖励系统
- 特殊道具和清除效果
- 分数和等级系统
- 游戏结束条件
# 分析用户描述
- 提取核心玩法机制
- 识别技术实现要点
- 评估复杂度和依赖关系
# 设计实现架构
- 选择合适的节点类型
- 设计组件通信机制
- 规划数据流向
# 自动生成代码
- 实现核心逻辑
- 集成物理系统
- 配置动画状态
- 添加错误处理
# 功能测试
- 基础功能验证
- 边界情况测试
- 性能优化建议
create_node - 创建游戏对象节点add_child_node - 添加子节点configure_node - 配置节点属性delete_node - 删除节点create_script - 创建脚本文件edit_script - 编辑脚本内容attach_script - 附加脚本到节点get_script_content - 获取脚本内容create_scene - 创建新场景save_scene - 保存场景load_scene - 加载场景instance_scene - 实例化场景play_scene - 运行场景测试get_node_properties - 获取节点属性set_node_property - 设置节点属性call_node_method - 调用节点方法# 平滑移动算法
func smooth_movement(delta: float) -> void:
var target_velocity = input_direction * move_speed
velocity = velocity.lerp(target_velocity, acceleration * delta)
move_and_slide()
# 跳跃物理算法
func handle_jump() -> void:
if is_on_floor() and Input.is_action_just_pressed("jump"):
velocity.y = jump_velocity
if can_double_jump and jumps_remaining > 0:
jumps_remaining -= 1
# 状态机AI算法
func update_ai(delta: float) -> void:
match current_state:
AIState.PATROL:
handle_patrol_behavior()
AIState.CHASE:
handle_chase_behavior()
AIState.ATTACK:
handle_attack_behavior()
# 推箱子物理算法
func push_box(box: RigidBody2D, force: Vector2) -> void:
if can_push_box(box):
box.apply_central_impulse(force * push_strength)
play_push_animation()
# 自动生成的角色控制器示例
extends CharacterBody2D
class_name AdvancedCharacterController
@export var move_speed: float = 300.0
@export var jump_velocity: float = -400.0
@export var double_jump_velocity: float = -350.0
@export var dash_speed: float = 600.0
@export var dash_duration: float = 0.2
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
var jumps_remaining: int = 2
var is_dashing: bool = false
var dash_timer: float = 0.0
@onready var animation_tree: AnimationTree = $AnimationTree
@onready var state_machine: AnimationNodeStateMachinePlayback = animation_tree["parameters/playback"]
func _physics_process(delta: float) -> void:
handle_gravity(delta)
handle_movement()
handle_jump()
handle_dash()
handle_states()
move_and_slide()
func handle_gravity(delta: float) -> void:
if not is_on_floor():
velocity.y += gravity * delta
func handle_movement() -> void:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = direction * move_speed
if direction != 0:
state_machine.travel("run")
else:
state_machine.travel("idle")
func handle_jump() -> void:
if Input.is_action_just_pressed("jump"):
if is_on_floor():
velocity.y = jump_velocity
jumps_remaining = 1
elif jumps_remaining > 0:
velocity.y = double_jump_velocity
jumps_remaining = 0
create_double_jump_effect()
# 自动生成的AI控制器示例
extends Node2D
class_name SmartAIController
enum AIState { PATROL, CHASE, ATTACK, SEARCH, FLEE }
var current_state: AIState = AIState.PATROL
# ✅ 正确:定义状态变化信号
signal state_changed(new_state: AIState, old_state: AIState)
var player: Node2D
var patrol_points: Array[Vector2]
var current_patrol_index: int = 0
var vision_range: float = 200.0
var attack_range: float = 50.0
func _ready() -> void:
# ✅ 正确:使用延迟调用确保场景树完全准备就绪
call_deferred("_initialize_player_reference")
func _initialize_player_reference() -> void:
player = get_tree().get_first_node_in_group("player")
if not player:
push_warning("场景中未找到玩家节点,请确保玩家节点在 'player' 组中")
func _process(delta: float) -> void:
if player: # ✅ 正确:检查玩家引用是否存在
update_ai_state()
execute_current_state(delta)
func update_ai_state() -> void:
if not player:
return
var distance_to_player = global_position.distance_to(player.global_position)
var can_see_player = can_see_target(player)
var old_state = current_state
match current_state:
AIState.PATROL:
if can_see_player and distance_to_player <= vision_range:
current_state = AIState.CHASE
AIState.CHASE:
if not can_see_player:
current_state = AIState.SEARCH
elif distance_to_player <= attack_range:
current_state = AIState.ATTACK
AIState.ATTACK:
if distance_to_player > attack_range:
current_state = AIState.CHASE
# ✅ 正确:状态变化时发射信号,传递新旧状态
if current_state != old_state:
state_changed.emit(current_state, old_state)
技能状态: ✅ 可用 最后更新: 2025-11-09 兼容性: Godot 4.5+ 依赖: Godot MCP 工具集 + 基础物理知识