궁수의 전설은 적을 자동 타겟팅 하는 방식으로
내가 하려는 방법은 필드 안 모든 몬스터에게 Line을 발사해서 중간에 벽이 있는지 없는지 체크 후
사이에 벽이 없는 몬스터만 NowallMonster 리스트에넣고 여기서 또 몬스터마다 거리를 체크 후
가장 가까운 몬스터를 타겟팅 하도록 하였다.
이런식으로 구별하기 쉽게 모든 몬스터에게 라인을 발사 후 사이에 벽이 있으면 빨간색 Line으로 처리하였다.
다음은 코드를 보자
일단 그라운드 스크립트에 들어오는 몬스터를 List에 넣고 플레이어가 그라운드에 들어오면 List를
플레이어 스크립트에 있는 몬스터 리스트에 넘겨준다
다음은 플레이어 스크립트로 넘어와서 몬스터 리스트에 있는 몬스터들에게 모두 Line을 발사하고
벽이 없는 몬스터만 L_NoWallMonster 리스트와 L_MonsterDis 리스트에 넘겨 주었다.
L_NoWallMonster 리스트는 벽이 없는 몬스터를 넣고
L_MonsterDis 리스트는 그 몬스터 중에서 거기를 계산하기 위한 리스트이다.
그 다음에 사이에 벽이없는 몬스터가 하나라도 있으면 리스트에서 제일 작은 수를 구하기 위한 알고리즘을 사용했다.
일단 float Dis변수에 첫번째 몬스터와의 거리를 넣고 모든 몬스터의 거리를 비교후 더 작은 거리가 있다면
그 거기를 Dis 변수에 넣어주면 마지막에는 제일 작은 몬스터와의 거리가 변수에 들어가게 돼있다.
그러면 num에 해당 몬스터의 인덱스 값을 넣어주고 마지막에 타겟팅 몬스터 변수에 해당 몬스터를 넣어주면 된다.
타겟 몬스터를 정했으면 타겟 몬스터를 바라보게 해줘야한다.
일단 움직이지 않고 몬스터리스트에 한마리 이상의 몬스터가 있다면 공격 상태(AttackCheck)를 True로 만들어주고
타겟 몬스터가 null값이 아니라면 타겟 몬스터르의 방향으로 쳐다보게 하였다. 이때 천천히 쳐다보게하려면
RotateTowards를 이용해서 쳐다보게 해주면 된다.
'유니티 게임 개발 일지' 카테고리의 다른 글
유니티 궁수의 전설 모작 - 5 (몬스터 - 패턴 Type에 따른 패턴 스타일) (0) | 2021.07.28 |
---|---|
유니티 궁수의 전설 모작 - 4 (몬스터 AI & 스크립트 작성) (0) | 2021.07.27 |
유니티 궁수의 전설 모작 - 3 (데이터베이스 연동 & 로딩창 만들기) (0) | 2021.07.24 |
유니티 궁수의 전설 모작 - 1 (플레이어 이동 및 물리 버그 해결) (0) | 2021.07.24 |
심심해서 만든 경마게임 (0) | 2021.07.22 |