본문 바로가기

유니티22

[Unity]BSP(Binary Space Partitioning)를 이용한 던전 룸 생성 - 02 이전 포스팅에서 공간을 나누어보았다. 이번에는 크게 설명할 게 없다. 목표는 다음과 같다. 분할된 공간 안에 임의의 사이즈의 직사각형 룸을 생성하는 것이다. 이해를 위해 먼저 결과물을 보면 사진과 같다. 미리 분할해놓은 공간 안에 임의의 위치, 임의의 사이즈의 룸을 생성한다. 이 부분은 각자 취향대로 구성할 수 있다. 하지만 나는 다른 사이트를 참고하여 만들었다. 다음과 같은 순서로 진행한다. 1. 공간의 중심좌표에서 랜덤하게 이동한 새로운 좌표를 구해준다. 2. 랜덤하게 길이, 높이를 빼주어 룸을 구성한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public void InitRoomSizeBySpace(int minPadding, int maxPadding) {.. 2023. 7. 13.
[Unity]BSP(Binary Space Partitioning)를 이용한 던전 룸 생성 - 01 Binary Space Partitioning(이하 BSP)를 먼저 간단하게 설명하자면 말 그래도 이진 공간 분할로 공간을 둘로 분할하며, 재귀적으로 나누어진 공간을 트리 형태로 구성하면 우리가 흔히 듣던 BSP Tree가 된다. 그럼 BSP를 이용해 던전을 구성해보자. 순서는 다음과 같다. 1. 한 공간을 수직 또는 수평으로 이분할 한다. 이 때, 분할된 공간을 노드로 취급하며, 이진 트리의 자식 노드로 추가한다. 2. 정해진 분할 개수만큼 1번을 반복한다. 3. 말단노드(Leaf Node)는 최종적으로 룸을 구성할 공간 노드가 되고, 나중에 이를 통해 룸을 구성한다. 1. 공간 분할하기 구현함에 있어 사람마다 다르게 구현한 걸 자주 볼 수 있었다. 예를 들면 노드의 순회 방식에 따라 깊이(depth).. 2023. 7. 12.
[Unity] OnDestroy에 처리할 내용은 다른 함수에 몬스터 오브젝트를 게임 내에서 제거하면(Destroy함수) 일련의 처리가 필요해서 OnDestroy 안에 코드를 작성했는데 이미 없어진 객체에 액세스 또는 참조하는 에러를 경험했다. 또 에디터의 PlayMode가 종료될 때 역시 Scene이 닫히면서 OnDestroy가 호출되는데, 씬 내에서 오브젝트가 제거되는 순서 역시 정해져있지 않기 때문에 에디터 내에서도 에러를 볼 수 있었다. 후자의 경우 오브젝트들이 제거되는 순서를 따로 명시해주는 걸로 해결할 수 있다. 전자의 경우 OnDestroy 안에 처리 내용을 작성하지 않고, 별도의 함수를 만들어 Destroy함수를 호출하기 전에 일련의 처리를 하고 Destroy를 호출했다. //캐릭터를 죽인다. void Kill() { //처리할 내용.... Destr.. 2020. 5. 18.
[Unity]Animation의 동작에 맞춰 함수 실행하기 제가 자주 사용하는 방식이라 한번 포스팅 해봅니다. 캐릭터의 동작에 맞춰 특정 함수를 실행시키고 싶을 때가 있습니다. 예를 들면 칼을 휘두르는 모션이 있으면, 모션 끝이나 중간에 함수를 실행시킨다던지 말이죠. 바로 delelgate를 이용해서 말입니다. 자주 사용하는 AnimationPlayer 클래스입니다. public class AnimationPlayer : MonoBehaviour { System.Action _beginCallback = null; System.Action _midCallback = null; System.Action _endCallback = null; public void Play(string trigger, System.Action beginCallback = null, S.. 2020. 3. 12.