void VerticalCollision(ref Vector2 moveAmount, bool bIsMoveX) { float directionY = -1f; if (moveAmount.normalized.y != 0f) { directionY = Mathf.Sign(moveAmount.normalized.y); } _iVerticalHitCount = 0; moveAmount = VerticalCollision(moveAmount, directionY, bIsMoveX); float rayLength = Mathf.Abs(moveAmount.y) + _fSkinWidth_Vertical; if (p_pCollisionInfo.climbingSlope) { float directionX = Mathf.Sign(moveAmount.x); rayLength = Mathf.Abs(moveAmount.x) + _fSkinWidth_Vertical; Vector2 rayOrigin = ((directionX == -1) ? _pRaycastOrigins.vecBound_BottomLeft : _pRaycastOrigins.vecBound_BottomRight) + Vector2.up * moveAmount.y; CalculateClimbSlope(rayOrigin, directionX, rayLength, ref moveAmount); } bool bIsStandOnPlatform = _iVerticalHitCount != 0 && directionY == -1f; if (bIsStandOnPlatform == false) { p_pCollisionInfo.DoSetSlopeSliding(false); } }