所以几天来我一直在尝试统一修复边缘检测。你看,当我在边缘下方,松开 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,他们不断用动画或边缘检测甚至同时使用两者来制动我的代码。
所以我只是删除了 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);
}
}