소스 정보
- 저장소
- hhhh124hhhh/godot-mcp
- 최근 소스 활동
- 2025년 11월 15일 14:02
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 42
- 포크
- 3
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/hhhh124hhhh/godot-mcp --skill godot-gameplay-developer명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| 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 工具集 + 基础物理知识