A* 알고리즘 - 가중치추가
방금 올린 게시물이다.
정리하면서 여러 레이어마스크를 활용하는 부분이 되게 인상깊어서
레이어마스크 부분만 따로 정리하는 게시물이다.
Unity의 Layermask는 32개의 비트로 이뤄져 있다.
Layer을 6번으로 설정했다고 하면 6번째 비트가 0에서 1로 바뀌는 것이다.
6번 레이어를 표현해보면 1<<6이자 2^6이다.
따라서 LayerMask를 비트 연산을 통해 관리할 수가 있다.
위 게시물에선 LayerMask walkableMask에 걸어다닐 수 있는 모든 레이어들을
비트 or 연산( |= )을 통해 묶어줘서 사용했다.
또한, LayerMask클래스에는 value변수가 있다.
이 값이 바로 해당 레이어를 정수로 나타내는 변수이다.
따라서 LayerMask를 통해 몇 번째 레이어인지 알려면 밑이 2인 로그함수를 사용해야한다.
LayerMask.value가 2의 거듭제곱 꼴로 숫자가 나오므로
Mathf.Log( LayerMask.value , 2);
이런 식으로 로그함수를 사용하면 지수 값을 알 수가 있다.