설명
유지보수를 쉽게 하기 위해 행동 트리로 맵 절차생성을 해본다.
절차생성은 모듈화와 범위 지정이 중요한데 행동트리에 딱 맞는 조건이라 생각했다.
코드 설명
이번에 쓸 행동트리다.
44라인 : 대충 맵 생성할 범위를 표시해줬다.
45라인 : 노드 변수를 루트의 레퍼런스로 초기화
46라인 : 시퀸스 노드를 루트에게 만들어주고 노드 변수에 대입. 이로써 노드 변수는 시퀸스를 가르킨다.
시퀸스 노드는 자식노드가 하나라도 false를 리턴하면 중단하고 false를 리턴한다.
47라인 : 랜덤한 크기의 섹터를 지정한다. true리턴
48라인 : 어... 이름이 이상한데 위에서 랜덤하게 지정한 방이 기존의 섹터들과 겹치는지 확인한다. 겹치면 false 아니면 true. 여기서 블랙보드를 갱신해준다.
블랙보드는 행동트리가 외부에서 들어온 입력을 확인하기 위해 존재한다. 내 행동트리는 블랙보드에 섹터를 그대로 넣는다.
49라인 : 시퀸스 노드의 자식이라 48라인에서 안겹쳐서 true가 나오면 실행해준다. 기능은 47라인에서 지정한 섹터를 그대로 생성
스페이스바를 누르면 행동트리가 실행된다.
행동트리 안쓰면 이렇게 코드가 나올것으로 예측되는데 복잡한 맵을 만들기 시작하면 훨씬 더 지저분해질 것이다.
벽끼리는 겹치는것을 허용했다.
범위를 벗어나는건 귀찮아서 안만짐.
다음은 통로 연결이나 생성하는 공간의 형태 같은걸 만들듯
댓글 0