بنقرة واحدة
godot-gameplay-developer
Godot 核心玩法逻辑开发专家,支持自然语言描述自动实现角色控制、物理系统、游戏规则等核心功能
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Godot 核心玩法逻辑开发专家,支持自然语言描述自动实现角色控制、物理系统、游戏规则等核心功能
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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 工具集 + 基础物理知识