[unity] 유니티 게임 따라 만들기5.2~6

김동민·2021년 10월 25일
0

https://youtu.be/uandR5M30ho [유튜버: 케이디]님의 유니티 3D강좌 영상을 보고 따라하면서 유니티 공부용으로 제작한 게임입니다.

오늘은 총을 발사 할 때 총의 반동처럼 흔들리는 모션과 재장전, 맞은 곳에 히트 이펙트가 뜨도록 하는 것을 따라해 봤다.

재장전

R키를 눌렀을 때 재장전이 실행되고 있으면 안되고(false) 이미 장전되어 있는 총알의 갯수가 재장전 되는 총알의 갯수와 같아선 안된다. 그리고 탄창 안에 있는 총알의 갯수 보다 재장전 하려는 총알의 개수가 클 때만 재장전할 수 있다는 의미이다.

그럴 때 재장전을 실행하며 CancelFineSight로 정조준을 풀고 Reloadcouroutine을 실행한다.

실제로 재장전을 할 수 있게 해주는 명령이다.
갖고 있는 총알의 갯수가 0보단 커야 장전을 할 수 잇을 것이다. 그때 isReload를 ture로 바꿔준다. 애니메이션 Reload를 실행한다.

그 다음에 원래는 장전을 하면 탄창은 버리고 새로운 탄창을 끼는 것이 제일 현실적이지면 조금 가벼운 느낌의 게임이므로 게임적인 요소를 더한 설정이 있다.
만약 탄창에 총알이 10발이 남아있고 30발을 장전하려하고 탄이 50개가 있다면 남아있는 탄알 10개를 갖고 있는 탄에 더해줘 탄창은 0이 되고 갖고 있는 탄알이 60개가 됬다가 30발을 장전하는 식의 방식으로 말이다.

장전이 끝났다면 isReload를 다시 false로 바꿔준다.

위의 경우가 아닌 즉, 탄알이 없다면 소유한 총알이 없다고 알려주는 로그를 띄운다.



그리고 이런식으로 재장전을 하려거나 정조준을 할 때는 재장전과 동시에 일어날 수 없으니 조건을 달아줬다.

히트 이펙트


총알이 발사되서 어딘가에 맞았으면 맞은 이펙트가 떠야한다. 그것을 위한 명령어이다. 카메라의 시점에서 발사해 도착한 곳의 정보를 가져와 표시하고 그곳에 prefab으로 만들어 둔 이펙트가 나오게 하며 이 이펙트가 계속해서 생성되면 메모리를 계속 잡아먹을테니 2초간만 유지해줬다가 삭제해주는 명령도 추가했다.


prefab의 hit-effact의 구현 설정이다. 루프가 반복하면 안되니 체크해제, 1번에 1번만 실행되며 탄이 맞아 스파크가 생기는 것처럼 만들기 위한 몇가지를 건들여주니 작게 불꽃이 퍼지는 것처럼 만들어졌다.

총알 관련 HUD

파일 안에 있는 총알 상태 HUD를 가져와 안에 텍스트 3개를 넣은 화면이다. 왼쪽부터 현재 소지중 총알, 장전할 총알, 장전된 총알이다. 이 총알 상태를 알려주는 HUD가 프레임마다 내가 총을 쏘고 장전할 때 줄어들고 늘어나야 한다.


필요한 컴포넌트인 GunController의 theGunController와 Gun의 currentGun을 불러와야 총알 상태를 표시할 수 있다. 그리고 HUD와 우리가 넣은 텍스트 3개를 가져온다.

이 텍스트들을 carry,reload,current와 연결짓고 스트링으로 변환해주면 의도한 모습처럼 나오게 된다.

다음엔 크로스헤어와 관련된 것을 배워보겠다.

profile
상상을 현실로 만들어내는 것이 즐겁습니다. 새로운 지식을 학습하고 기존의 지식들이 변화하는 과정들이 즐겁습니다. 개발의 과정은 개발자의 편의를 고려하고 결과는 사용자의 편의를 고려합니다.

0개의 댓글