데이터베이스 연동이 끝났으면 몬스터를 제작해보자 일단 몬스터 상태는 4개로 지정하였다.
대기 상태에서 대기 쿨타임이 끝나면 패턴 지정 상태에서 패턴을 지정하고 공격준비 상태 - 패턴 상태가 된다.
패턴 지정상태를 따로 만들어둔 이유는 패턴이 랜덤으로 지정 되는 몬스터와 순차적으로 진행되는 몬스터가
분리되었기 때문이다.
1.Start Setting (시작)
45 - 몬스터 프리팹을 끌어 놓으면 몬스터가 바닥으로 내려가있어서 알아서 올라올 수 있도록 Y축을 설정 하였다.
46 - NavMesh는 길찾기 알고리즘 시스템으로 플레이어를 향해서 이동만하는 몬스터에게 적용하려고 한다.
근데 NavMesh는 딱히 쓰고싶지 않아서 나중에 스크립트로 길찾기 알고리즘을 해보려고한다 NavMesh는 맵마다
Bake버튼을 눌러서 설정을 해줘야해서 한 맵에 스테이지별로 장애물과 몬스터를 소환하기에는 맞지 않다.
47 - 몬스터 애니메이션 컴포넌트
48 - 가이드 라인이 있는 몬스터를 위한 라인랜더러
49 - 모든 몬스터 공용의 HP Bar 스크립트
51 - 데이터 매니저에 저장된 몬스터 데이터를 불러오는 함수
일단 스테이터스를 가져오고 보유 패턴넘버에 따라 패턴리스트에서 패턴을 가져온다.
52 - Start문과 다르게 데이터베이스에 따라 시작 셋팅 함수이다.
일단 현재Hp를 스테이터스에 있는 HP와 동일하게 만들어주고
HpBar에서 RectTransform 컴포넌트를 불러와서 해당 몬스터가 보스이면 Hp바를 좀더 크게 만들어 주었다.
다음은 if(Monster.Through)인데 해당 몬스터가 벽을 통과하는 몬스터면 True로 ThroughMonster레이어를 지정해준다.
레이어를 따로 지정한 이유는 벽통과몬스터의 레이어와 벽과 충돌이 안되도록 따로 설정을 해두었기 때문이다.
다음으로 agent는 NavMesh 컴포넌트에서 속도값을 몬스터 스텟에 속도값을 적용 시켜주었다.
그러고 바로 밑에서 몬스터가 벽을 통과 하거나 대기중 플레이어를 추적하지 않는 몬스터는 NavMesh를 삭제해주었다.
괜히 NavMesh를 가지고있으면 가끔 알 수 없는 버그가 떳기 때문이다.
54 - 몬스터의 첫 상태를 대기 상태로 지정하였다.
2.Wait State (대기 상태)
대기상태일 때 대기 쿨타임을 증가시키고 대기중 유저를 추적한다면 PlayerTracking함수로 플레이어에게 향하도록
하였다.
그런다음 쿨타임이 끝나고, 패턴이 하나라도 있으면 다음 패턴으로 넘어가도록 하였다.
3.Select Peturn (패턴 선택 상태)
일단 패턴이 랜덤인지 아닌지부터 구별한다. 패턴이 랜덤일 경우 패턴 갯수안에서 랜덤 난수를 발생시키고
현재패턴에 랜덤으로 지정한 패턴을 넣는다.
랜덤이 아닐경우 Peturn_Count 라는 정수형 변수를 이용해서 0부터 올라가도록 하였고 패턴이 끝나면 다시 돌아와서
다음 패턴을 실행 하도록 하였다.
근데 패턴 카운트가 끝났는지 구별하는 구문이 안보인다 그 구문은 다른 함수에 지정해놓았다.
End Petrun함수는 패턴이 끝나고 발생하는 함수로 위에 4줄은 나중에 설명 하겠습니다.
첫번째 if문은 몬스터가 랜덤이면 대기상태 두번째는 아까 보았던 패턴카운트와 갯패턴의 크기가 동일하면 대기상태로
이동하고 패턴카운트를 0으로 초기화 시켜주었다. 이렇게 되면 모든 패턴이 끝나면 패턴이 초기화되는걸 볼 수 있다.
다음 if문은 순차적 패턴일 경우 패턴이 끝나지 않았을 때 패턴선택 상태로 돌아가게 해놓았다.
다음은 몬스터 패턴 Type에 따른 공격준비상태와 패턴상태가 다른것을 작성하겠습니다.
'유니티 게임 개발 일지' 카테고리의 다른 글
유니티 궁수의 전설 모작 - 6 (스테이지 구현) (0) | 2021.08.01 |
---|---|
유니티 궁수의 전설 모작 - 5 (몬스터 - 패턴 Type에 따른 패턴 스타일) (0) | 2021.07.28 |
유니티 궁수의 전설 모작 - 3 (데이터베이스 연동 & 로딩창 만들기) (0) | 2021.07.24 |
유니티 궁수의 전설 모작 - 2 (몬스터 자동 타겟팅) (0) | 2021.07.24 |
유니티 궁수의 전설 모작 - 1 (플레이어 이동 및 물리 버그 해결) (0) | 2021.07.24 |