Unity 边缘检测问题

问题描述 投票:0回答:1

所以几天来我一直在尝试统一修复边缘检测。你看,当我在边缘下方,松开 ctrl 按钮并离开边缘时,玩家会陷入边缘检测周期,直到我再次按下 ctrl,玩家就会返回到正常的玩家状态。我已经在 Pastebin 中提供了链接:https://pastebin.com/r6GWw4ba

private bool IsUnderEdge()
{
    RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.up, EdgeCheckDistance, groundLayer);
    return hit.collider != null;
}

`。 我必须提到的是,蹲伏的碰撞器不会切换,它也卡在边缘检测状态。更多细节我有一个空的游戏对象用于开销,我正在尝试使用。

请记住,我在游戏开发中仍然是“婴儿”编码,我尝试过 google Gemini 和 Chatgpt,他们不断用动画或边缘检测甚至同时使用两者来制动我的代码。

c# game-development unityscript
1个回答
0
投票

所以我只是删除了 Input.GetKeyUp 并仅使用 !isEdgeAbove 的条件,并根据是否有上方边缘或没有边缘更改了所述条件。

 private void PlayerCrouching()
 {
 if (Input.GetKey(KeyCode.LeftControl) && isGrounded)
 {
     SetCrouch(true);
 }
 else if (!isEdgeAbove) 
 {
     SetCrouch(false);
 }
 if (isCrouching == true)
 {
     PlayerAnimator.Instance.ChangeAnimationState(PlayerAnimator.Player_Crouch);
 }
 

}

© www.soinside.com 2019 - 2024. All rights reserved.