You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot GDScript蹲伏系统无法取消蹲伏问题求助

蹲伏机制无法取消状态的修复方案

问题排查

你的代码核心问题集中在射线检测准确性和动画状态同步上:

  1. 用角色根节点position作为射线起点偏低,容易导致头顶障碍物检测误判;
  2. play_backwards反向播放动画的逻辑不稳定,且未等待动画完成就修改crouch状态;
  3. 射线检测的碰撞层参数设置模糊,可能误检测自身或忽略有效障碍物。

修复代码

var crouch = false
var is_uncrouching = false  # 标记是否处于取消蹲伏的动画过程中

func _physics_process(delta):
    # 按下蹲伏键且未在取消蹲伏时,进入蹲伏状态
    if Input.is_action_pressed("Crouch") and not is_uncrouching:
        speed = CROUCHSPEED
        if not crouch:
            $AnimationPlayer.play("Crouch")
            crouch = true
    else:
        # 未按蹲伏键且当前是蹲伏状态时,尝试取消蹲伏
        if crouch and not is_uncrouching:
            # 调整射线起点到角色上半身位置,适配角色尺寸
            var start_pos = position + Vector3(0, 1, 0)
            var end_pos = start_pos + Vector3(0, 1.5, 0)
            # 创建射线查询,明确排除自身碰撞体
            var query = PhysicsRayQueryParameters3D.create(start_pos, end_pos)
            query.exclude = [self]
            
            var space_state = get_world_3d().direct_space_state
            var result = space_state.intersect_ray(query)
            
            # 头顶无障碍物时,触发取消蹲伏动画
            if result.empty():
                is_uncrouching = true
                $AnimationPlayer.play("Stand")  # 用专门的站立动画替代反向播放
                # 绑定动画完成信号,确保状态同步
                $AnimationPlayer.connect("animation_finished", self, "_on_stand_anim_done")

# 站立动画完成后恢复状态
func _on_stand_anim_done(animation_name):
    if animation_name == "Stand":
        crouch = false
        is_uncrouching = false
        speed = NORMALSPEED  # 恢复正常移动速度
        $AnimationPlayer.disconnect("animation_finished", self, "_on_stand_anim_done")

关键修改点

  • 新增is_uncrouching变量,避免取消蹲伏过程中重复触发逻辑;
  • 调整射线检测的起点和终点,贴近角色实际头顶位置,提升障碍物判断准确性;
  • 用独立的站立动画替代反向播放蹲伏动画,避免动画状态异常;
  • 通过animation_finished信号同步crouch状态,确保动画完成后才切换状态;
  • 明确设置query.exclude = [self],防止射线误检测自身碰撞体。

额外建议

  • 检查动画资源:确保"Stand"动画的过渡流畅,长度符合角色起身逻辑;
  • 动态调整碰撞体:蹲伏时缩小角色碰撞体高度,避免起身时被障碍物卡滞;
  • 测试边界场景:比如低矮天花板下,确认无法取消蹲伏的逻辑正常触发。

内容的提问来源于stack exchange,提问作者Username008445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:04:59