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

平台游戏角色下蹲功能异常,如何实现松开S键自动复位站立?

问题根因
  • 现有逻辑未添加下蹲状态标记,每次按下S键都会重复扣减Y轴缩放值,导致角色尺寸持续缩小
  • 仅监听了S键按下事件,未监听S键抬起事件,无法触发站立恢复逻辑
修复方案

首先新增两个成员变量,分别存储角色站立时的原始缩放值,以及标记当前下蹲状态,避免硬编码数值和重复触发逻辑:

public GameObject Player;
// 存储站立时的原始Y轴缩放
private float originalScaleY;
// 标记当前是否处于下蹲状态
private bool isCrouching = false;

private void Start()
{
    // 初始化时记录角色原始Y轴缩放,适配任意初始尺寸的角色
    originalScaleY = Player.transform.localScale.y;
}

void Crouch()
{
    // 按下S键且未处于下蹲状态时,触发下蹲
    if(Input.GetKeyDown(KeyCode.S) && !isCrouching)
    {
        Player.transform.localScale = new Vector3(
            Player.transform.localScale.x,
            originalScaleY - 0.3f,
            Player.transform.localScale.z
        );
        isCrouching = true;
    }
    // 松开S键且处于下蹲状态时,恢复站立
    if(Input.GetKeyUp(KeyCode.S) && isCrouching)
    {
        Player.transform.localScale = new Vector3(
            Player.transform.localScale.x,
            originalScaleY,
            Player.transform.localScale.z
        );
        isCrouching = false;
    }
}
额外优化提示
  • 仅修改localScale只会改变角色的视觉表现,如果你用了碰撞体或者CharacterController组件,需要同步修改对应组件的尺寸参数,否则会出现视觉下蹲但碰撞体积不变的穿模、卡墙问题
  • 0.3f的下蹲缩放差值可以根据你的角色实际尺寸调整,建议提取为公共变量方便在Inspector面板直接修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 11:27:04