이번 시간에는 원거리 무기를 만들어 보도록 하겠습니다.
먼저 가까이 있는 몬스터를 검색하기 위해 scanner 라는 c# 스크립트를 만들어줍니다.
코드를 설명해드리도록 하겠습니다. 먼저 fixedupdate에서 circlecast, 주변에 원모양으로 레이저?를 쏴 주변에 어떤 오브젝트들이 있는지 확인하는 코드를 실행시켜 주변의 오브젝트들을 파악해줍니다.
그 뒤 getNearest 함수를 작동시키는데, 먼저 초기 거리 차이 최대값을 100으로 둡니다.
위에서 raycast로 찾은 오브젝트들이 들어있는 targets를 foreach문을 이용해 돌리고, 그 targets 안에 들어있는 오브젝트와 거리를 제는 기준이 되는 오브젝트와의 거리를 구합니다. 그리고 그 차이가 diff 보다 작다면 그 값을 result로 바꾸어줍니다
그 과정을 거치게 되면 targets중 가장 적은 거리차이가 나는 오브젝트를 찾을 수 있게 됩니다.
이제 총알이 될 오브젝트의 프리펩을 만들어 보겠습니다.
그 전에 만들어 두었던 삽 모양의 총알을 계층에 끌어다 놓아 오브젝트를 만들어주고, 이름은 weapon1이라고 지어줍니다.

이제 그 오브젝트의 모양을 총알모양 스프라이트를 끌어넣어 바꿔주고, 콜라이더의 종류도 캡슐콜라이더로 바꾸어줍니다.
또한 총알은 움직여야 하므로 rigidbody를 추가해주고, isTrigger에 체크를 해주어서 몬스터와 충돌로 인해 총알이 꺾이지 않도록 해줍니다.
이제 총알이 생성되도록 스크립트를 짜주겠습니다.
저번시간에 짰던 weapon 아래쪽에 이런 fire라는 함수를 만들어줍니다.
만약 주변에 쏠 대상이 없다면 바로 return을 해서 함수가 작동하지 않도록 해줍니다.
있다면 그 대상의 방향을 구해주고, 총탄은 poolmanager에서 가져오도록 해 줍니다.
또한 데미지와 관통횟수도 가져오도록 해줍니다.
다음 글에서는 총탄이 날아갈 수 있도록 완성시켜주도록 하겠습니다.
이제 점점 게임같아지는것 같아서 좋네요! 열심히 해서 잘 완성해보도록 하겠습니다!
이글은 아래의 영상을 따라하는 과정을 기록하는 글 입니다. 궁금한 점이 있다면 아래의 영상을 참고해주시기 바랍니다.
'유니티 > 뱀서라이크' 카테고리의 다른 글
| 뱀서라이크 따라하기 - 레벨 업 구현하기 (0) | 2023.08.04 |
|---|---|
| 뱀서라이크 따라하기 - 플레이어 무기 장착 (0) | 2023.08.03 |
| 뱀서라이크 따라하기 - 근접 무기 만들기 (0) | 2023.08.01 |
| 뱀서라이크 따라하기 - 소환레벨 적용하기 2번째 (0) | 2023.07.31 |
| 뱀서라이크 따라하기 - 오브젝트 풀링 2번째 (0) | 2023.07.30 |