본문 바로가기

TIL

[ 24.07.25 ] 내일배움캠프 TIL - Animation Trigger, 경사로 판정

[ ps ]

 

[ 백준 / C++ ] 1918 : 후위 표기식 (tistory.com)

 

[ Unity ]

 

첫 번째로 플레이어가 죽을 때 나오는 PlayerDeath 애니메이션이 반복해서 재생되는 오류가 존재했다.

 

애니메이션이 loop가 아니었음에도 반복되었는데,

Animator에서 Death 변수를 bool에서 trigger로 변경함으로써 해결했다.

Animator

 

두 번째로 경사로에서 Ground 판정이 되지 않던 오류가 존재했다.

 

이를 해결하기 위해 ray를 중심 뿐만 아니라 1/4, 3/4 지점에서도 ray를 쏨으로서 해결했다.

protected bool IsGround()
{
    List<Vector2> positions = new List<Vector2>();

    Vector2 centerPosition = stateMachine.player.boxCollider.bounds.center;
    float extentX = stateMachine.player.boxCollider.bounds.extents.x;

    positions.Add(centerPosition);
    positions.Add(centerPosition - new Vector2(extentX / 2, 0));
    positions.Add(centerPosition + new Vector2(extentX / 2, 0));

    float rayDistance = stateMachine.player.boxCollider.bounds.extents.y + 0.1f;
    LayerMask groundLayer = LayerMask.GetMask("Ground");

    foreach (Vector2 position in positions)
    {
        if (Physics2D.Raycast(position, Vector2.down, rayDistance, groundLayer))
        {
            return true;
        }
    }

    return false;
}