-
Not Synced
이번 페이즈에서 우리는 이 포탄
-
Not Synced
프리팹을 만들 것입니다. 이것은 보시는 것 처럼 생겼고
-
Not Synced
여러개의 서로 다른 컴포넌트를 가지고 있죠
-
Not Synced
콜라이더를 가지고 있고, 리기드 바디도, 라이트 컴포넌트도 가지고 있네요.
-
Not Synced
그리고 이걸 가지고 하고자 하는건,
-
Not Synced
탱크에서 이것을 발사한 다음에, 포탄으로서의 일을 하기 위해서
-
Not Synced
주위를 덮어씌우는 구를 가지는데요
-
Not Synced
데미지를 주는 일종의 구를 만들어서
-
Not Synced
착탄 지점 근처에 있는 탱크들에게 데미지를 줄수 있게 합니다.
-
Not Synced
그러니 이번 비디오에서는, 지금 제가 이걸 움직여서 천천이
-
Not Synced
탱크에 좀더 가까이 두고 보면
-
Not Synced
포탄이 가까울 수록 체력이
-
Not Synced
더 줄어드는 걸 볼수 있죠.
-
Not Synced
바로 지금 확인해볼수 있겠죠.
-
Not Synced
이걸 좀더 가까이 해보면
-
Not Synced
가까이 갈수록 더 많은 데미지가 들어가네요.
-
Not Synced
당연하게도, 탱크 바로 위를 때려버리면
-
Not Synced
엄청난 데미지를 줄겁니다
-
Not Synced
이것이 바로 다음 페이즈 동안 우리가 만들 포탄입니다
-
Not Synced
실제 슈팅에 대한 부분을 처리한 다음에요
-
Not Synced
하지만 먼저, 우리는 데미지를 처리해줘야 합니다
-
Not Synced
아니면 전에 우리가 작성한 TankHealth 스크립트에다
-
Not Synced
데미지를 전달해줄 녀석을 만들어주어야죠.
-
Not Synced
좋아요 여러분들이 해줄일은 먼저
-
Not Synced
Models 폴더로 가서, 이 폴더에서
-
Not Synced
Shell 이라는 모델을 찾아주세요
-
Not Synced
선택해보면 인스펙터에 이렇게 보일거에요
-
Not Synced
참고로, 뭔가 인스펙터로 관찰중일 때는
-
Not Synced
이렇게 그냥 드래그 해넣어 프리뷰 창에서 둘러볼 수 있습니다.
-
Not Synced
인스펙터의 바닥에 있죠.
-
Not Synced
그래서 이제 이것을 하이라키로 드래그합니다
-
Not Synced
모델을 프로젝트에서
-
Not Synced
가져와 하이라키로 드래그 앤 드롭 했다면
-
Not Synced
마우스 커서를 씬 뷰 위에다가 놓고
-
Not Synced
F 를 눌러 선택된 프레임으로 가보세요
-
Not Synced
그러면 대략적으로 원점에 위치하고 있단걸 알겁니다
-
Not Synced
그러니까 0 근처라는 건데
-
Not Synced
저는 이걸 드래그해서
-
Not Synced
위로 어딘가에 좀 올릴게요. 그래야
-
Not Synced
이걸 눈으로 보면서 작업하죠. 이게 더 낫네요.
-
Not Synced
기억할 것은, 우리가 프리팹을 만드는데
-
Not Synced
탱크가 발사할 녀석이라서 게임이 시작될 때
-
Not Synced
씬에 남아 있으면 안되요.
-
Not Synced
그러니 탱크와 마찬가지로 (나중에 지울테니까)
-
Not Synced
당장 어디에다 위치해 놨는지는 상관 하지 않아도 되요.
-
Not Synced
그러니 이제 우리는 다른 오브젝트와
-
Not Synced
상호작용할 무언가를 만들건데
-
Not Synced
이것은 콜라이더가 필요합니다.
-
Not Synced
우리는 primitive(기본형태) 콜라이더들을 사용합니다. 왜냐면
-
Not Synced
이들은 간단하고 성능이 좋거든요. 그리고 여기 형태는
-
Not Synced
우리는 캡슐 콜라이더를 사용할겁니다.
-
Not Synced
그러니 포탄이 아직 선택된 상태에서
-
Not Synced
인스펙터에서 Add Component 버튼을 누르고
-
Not Synced
Caps 만 검색해보면
-
Not Synced
Capsule 에 대해서 뜨는데
-
Not Synced
Confirm 까지 계속 클릭하거나 리턴(엔터키)를 누르세요.
-
Not Synced
캡슐 콜라이더를 가지고,
-
Not Synced
어떤걸 발사하려고 할때는요
-
Not Synced
우리가 지금 쓰는 발사체(투사체;Projectile) 같은 걸 말이죠,
-
Not Synced
이러한 물건들이 다른 곳으로 튕겨나가길 원치도 않고
-
Not Synced
이 탱크 포탄이 어떤곳에 부딫쳐선
-
Not Synced
그걸 밀어내버리는 것도 원치 않습니다.
-
Not Synced
우리는 이것이 어떤것에 부딫치면
-
Not Synced
스크립트에서 콜백을 만들고 그 다음
-
Not Synced
폭발 힘 을 만들길 윈해요.
-
Not Synced
그러니, 우리는 어떠한 물리적인 반응작용도 원하지 않아요.
-
Not Synced
그래서 우리가 그런걸 원하지 않을 때는, 트리거 라는 것을 쓰면 됩니다.
-
Not Synced
누군가 트리거 라는 것에 말할때는
-
Not Synced
아니면 트리거 존 이라던가
-
Not Synced
아니면 트리거 영역 이라는 말은, 그 사람이 말하는 것은
-
Not Synced
콜라이더인데 트리거 체크가
-
Not Synced
된 것을 말해요.
-
Not Synced
그러니 IsTrigger 체크박스를 체크 한다면
-
Not Synced
이것이 기본적으로 의미하는 바는,
-
Not Synced
여기에 단단한 표면이라는 것이 존재하지 않아서
-
Not Synced
그냥 통과가 가능한데, 대신에
-
Not Synced
스크립트로 이런 식으로 콜백을 보냅니다.
-
Not Synced
'나는 지금 다른 트리거에 진입했어' 라거나
-
Not Synced
'나는 다른 콜라이더에 들어왔어' 라는 식으로요.
-
Not Synced
그러니 대게 트리거는 게임의
-
Not Synced
문 같은 곳에서, 커다란
-
Not Synced
육면체 콜라이더를
-
Not Synced
입구로 놓아두면, 캐릭터가 그쪽으로 들어오려 할때
-
Not Synced
자동으로 문이 열리게 할수 있죠.
-
Not Synced
대게 이런 방법이 콜라이더를 쓰는 고전적인 방법입니다.
-
Not Synced
일단 이 컴포넌트를 추가했다면, 다음으로는
-
Not Synced
이걸 세팅을 해줘야 해요
-
Not Synced
그래서 우리는 중심을 바꿔주어야 하는데
-
Not Synced
Center 값을 (0,0,0.2) 로 해주세요.
-
Not Synced
반지름 Radius 는 (0.15) 로요.
-
Not Synced
높이 Height 는 (0.55) 로 해주세요.
-
Not Synced
중요한 점은, 틀린 방향으로 되어있단게
-
Not Synced
보일텐데, 그러니 direction 을
-
Not Synced
Z 축으로 변경해줘야 합니다. 그러면
-
Not Synced
이제 나름 이쁘게 우리의 포탄과 완벽히 맞추어 지네요.
-
Not Synced
아니면 최소한 문제 없을 정도로는 비슷하게 맞추어졌죠.
-
Not Synced
이렇게 보여야 합니다.
-
Not Synced
그 다음에는 마지막으로 이것은 물리적인 오브젝트 이기에
-
Not Synced
우리는 이것을 물리 엔진이
-
Not Synced
제어하게 해야 합니다. 그러면 우리가 뭘 더해야 하죠?
-
Not Synced
리기드 바디죠. 여기 멋지게.
-
Not Synced
여기 우리 리기드바디 컴포넌트를 추가했습니다.
-
Not Synced
이제 준비가 됬군요.
-
Not Synced
그래서 이 포탄들이 우리가 발사하게 될
-
Not Synced
발사체 들인데, 이들이 그냥 직선으로 바로 날아가선 안됩니다.
-
Not Synced
시간에 따라 중력에 의해 떨어져야죠.
-
Not Synced
그래서 일단 두 부분을 잠시 다시보기 하죠.
-
Not Synced
우리는 Models 폴더에서 Shell 이라는 이름의 모델을 찾습니다.
-
Not Synced
하이라키 위에 이것을 드래그하구요.
-
Not Synced
우리는 캡슐 콜라이더 컴포넌트를 포탄에 추가했습니다.
-
Not Synced
그리고 이것이 트리거가 되도록 해주어서
-
Not Synced
트리거로서 부딫쳐 튕겨돌아다니지 않게 해주었죠
-
Not Synced
물체들을 통과하여 그대로 주욱 날아가선
-
Not Synced
바로 그러자마자 스크립트를 통해 파괴되야 합니다
-
Not Synced
우리가 작성할 것이죠
-
Not Synced
우리는 이러한 경우 IsTrigger 를 체크합니다
-
Not Synced
그리고 방향을 Z 축으로 설정하죠
-
Not Synced
그리고 Centre 를 바꿨는데, Centre 란
-
Not Synced
기본적으로 원점을 어디에 두냐라서
-
Not Synced
아트 모양에 맞추기 위해 콜라이더에 오프셋을 주죠
-
Not Synced
그리고 radius 은 0.15 로 주었죠. 캡슐의 반지름 말이에요.
-
Not Synced
그리고 높이는 0.55 를 주엇습니다.
-
Not Synced
그리고 리기드 바디를 붙였습니다. 그래서
-
Not Synced
물리 엔진의 지배하에 놓으려구요.
-
Not Synced
그리고 여기 포탄을 얻었네요
-
Not Synced
지금은 포탄이 추락하는 건 되는데
-
Not Synced
정말 아무것도 일어나지 않습니다.
-
Not Synced
그저 바닥을 그대로 통과해버리죠
-
Not Synced
왜냐면 아무것도 이것을 막지 않기 때문이죠.
-
Not Synced
아까 말했듯이 물리적으로 실존하지 않아요.
-
Not Synced
이런 식은 원하지 않아요. 우리는 실제로
-
Not Synced
폭발하고 어떤 일을 해주고 싶습니다. 그러니 우리는
-
Not Synced
포탄 폭발 Shell Explosion 을 당신을 위해 만들어 두었습니다.
-
Not Synced
그러니 Prefabs 폴더로 가보면,
-
Not Synced
ShellExplosion 이라는 프리팹을 발견할겁니다.
-
Not Synced
그래서 이걸 가지고 우리가 할게 뭐냐면
-
Not Synced
이걸 포탄의 자식으로 만들어주세요
-
Not Synced
그러니 프리팹 폴더에서 드래그 해서
-
Not Synced
포탄 위로 드래그하면 됩니다
-
Not Synced
그러면 이렇게 보일거에요
-
Not Synced
이걸 시뮬레이트 해보면
-
Not Synced
이렇게 보일겁니다.
-
Not Synced
시간에 따라 먼지 구름이 생겨나죠.
-
Not Synced
좋아요. 이제 우리가 해야할 남은
-
Not Synced
유일한 일은
-
Not Synced
오디오 소스를 더해줘야 합니다
-
Not Synced
그러니 탱크 폭발 때와 비슷하게
-
Not Synced
이것은 비주얼 이펙트와 오디오 이펙트를 가져야 합니다.
-
Not Synced
그러니 우리는 Add Component 버튼을 그냥 눌러주면 됩니다
-
Not Synced
그리고 Audio Source 를 선택할거에요.
-
Not Synced
그리고 나서, 이전에 우리가 한것 처럼
-
Not Synced
우리는 오디오 클립이 필요하고, 그래서 저는
-
Not Synced
audio clip 옆의 동그라미 버튼을 눌러
-
Not Synced
ShellExplosion 을 선택하여 할당해줄겁니다.
-
Not Synced
이제 우리는 포탄이 초기화 되자 마자 혹은
-
Not Synced
폭발이 보이자마자 바로 재생되는걸 원치 않기에
-
Not Synced
우리는 Play On Awake 를 체크 해제 해줍니다.
-
Not Synced
그래서 잠시 빠른 다시보기, 우리는 ShellExplosion 프리팹을 가지고
-
Not Synced
포탄 게임 오브젝트의 자식으로 넣어주었습니다.
-
Not Synced
그러면 이 녀석은 포탄과 함께 움직일 것이고, 무언가에
-
Not Synced
부딫쳤을때 자기 할일을 해줄겁니다.
-
Not Synced
우리는 여기다가 오디오 소스를 붙여주었습니다.
-
Not Synced
그래서 사운드를 재생할수 있게요. 우리는 동그라미 선택
-
Not Synced
버튼으로 ShellExplosion 으로 오디오 클립을 지정해주었습니다.
-
Not Synced
우리는 이것이 게임 월드에 생겨나자 마자
-
Not Synced
바로 플레이 되는 것을 원치 않습니다. 우리는 그저
-
Not Synced
충돌을 할때만 재생하고 싶으니 Play On Awake 체크를 해제합니다.
-
Not Synced
좋아요. 마지막으로 포탄에 해줘야 할일은
-
Not Synced
부모 오브젝트인 포탄을 다시 눌러주고
-
Not Synced
라이트를 더해줍니다.
-
Not Synced
그래서 게임판 위를 날아다닐 때
-
Not Synced
우리는 이것이
-
Not Synced
주변 환경을 밝게 비추게 하려는 겁니다.
-
Not Synced
그리고 포탄을 구별하기도 편하죠. 왜냐면 명백히도
-
Not Synced
황금색 포탄을 가지고 있고, 주황색 모래가 깔려 있으니
-
Not Synced
구별하기 힘듭니다. 거기에 라이트가 더해지면서 구별하기 좋아지죠.
-
Not Synced
그래서 Point 라이트 게임 오브젝트를 만드는 것 대신에
-
Not Synced
그냥 같은 라이트를 간단하게 더해줄수 있습니다.
-
Not Synced
그래서 만약 당신이 유니티에 처음이라면,
-
Not Synced
Game Object - Create 로 가보면
-
Not Synced
이미 만들어진 프리팹화된, 몇몇 컴포넌트들을 가진
-
Not Synced
오브젝트들이 미리 다 있다는게 보일겁니다.
-
Not Synced
그래서 예를 들어, 만약 당신이 선택하는데,
-
Not Synced
큐브가 있다 치면, 당신은
-
Not Synced
수많은 다른 컴포넌트들이 여기 달려 올겁니다.
-
Not Synced
하지만 당신은 그저 라이트 컴포넌트를 여기다 붙여서
-
Not Synced
라이트를 생성할 수도 있죠.
-
Not Synced
우리는 그럴 필요는 없습니다. 우리는 그저 포탄위에
-
Not Synced
바로 컴포넌트를 붙일거에요,
-
Not Synced
그래서 Add Component - Light 해줍니다.
-
Not Synced
좋아요, 이제 실제로 어떻게 동작할지
-
Not Synced
어떻게 이것이 충돌할지, 탱크와 충돌할땐 무엇을 할지
-
Not Synced
아니면 환경에 충돌했을 때, 그리고
-
Not Synced
게임에서 다른 탱크들에 어떻게 힘을 줄지
-
Not Synced
이들을 제어해줘야 합니다.
-
Not Synced
그러니 이제 우리가 할일은,
-
Not Synced
Scripts 폴더로 들어가서 그리고
-
Not Synced
Shel l폴더를 찾습니다.
-
Not Synced
거기서 우리는 ShellExplosion 이라는 스크립트를 찾습니다.
-
Not Synced
그러니 우리는 ShellExplosion 을 드래그 앤 드롭해서
-
Not Synced
하이라키의 포탄 게임 오브젝트에 붙입니다.
-
Not Synced
그리고 나면 우리가 방금 까지 더해온
-
Not Synced
다른 모든 것들 처럼, 리기드바디
-
Not Synced
캡슐 콜라이더와 라이트에 이어
-
Not Synced
Shell Explosion (스크립트) 를 가지게 되었습니다.
-
Not Synced
그리고 나서 이것을 더블클릭하여 편집하기 위해 엽니다.
-
Not Synced
좋아요. 이제 여기서 우리는 어떠한 private 변수도
-
Not Synced
없는데, 하지만 우리는 여러개의 public 들을 가지네요.
-
Not Synced
그래서 첫번째는 레이어 마스크 입니다.
-
Not Synced
트레이닝 데이의 초반에 모든 탱크에
-
Not Synced
Players 레이어를 붙인게 기억 날수도 있습니다.
-
Not Synced
이게 의미하는 바는, 우리가 폭발
-
Not Synced
을 포탄에서 일으킬때 우리는
-
Not Synced
Players 레이어인 모든 것들만 체크한다는 겁니다. 그리고
-
Not Synced
어떤 탱크에다 부딫쳤는지 보는거죠. 모든 것에다가 영향을 주는게 아니라.
-
Not Synced
그래서 이것은 인스펙터에서 설정 가능합니다.
-
Not Synced
여기서 우리는 영향을 미치고 싶은 레이어를 선택하죠.
-
Not Synced
그 다음은 폭발 파티클입니다.
-
Not Synced
우리가 그것을 자식 게임 오브젝트로 드래그 해 넣은것을 기억하세요.
-
Not Synced
우리는 그것의 레퍼런스를 가져와서, 그래서
-
Not Synced
포탄이 폭발할때 파티클을 재생할수 있도록 할겁니다.
-
Not Synced
이전의 것들과 같이, 오디오 소스의 레퍼런스가 있고,
-
Not Synced
그래서 이걸로 오디오 소스의 레퍼런스를 가져와서
-
Not Synced
사운드를 재생할수 있죠.
-
Not Synced
그리고 나면 여기 많은 float 들이 있는데요
-
Not Synced
첫번째 녀석은