[Unity]08.총알 만들기

안녕하세요 유랑입니다.




간단하게 시작했지만 점점 fps 게임 모양새를 갖추고 있는 게임이 끝이 보이네요ㅎㅎ

가능하면 전혀 다른 객체를 가지고 글을 쓰고 싶었으나 쓸 기능들을 추가하다보니

이렇게 온것 같습니다.

지난시간에는 레거시 애니메이션을 추가해 캐릭터를 움직여 보았는데요.

이번에는 총을 장착해 쏘는 방법까지 진행하도록 하겠습니다.




1. 총알 만들기



총알을 발사하려면 많은 준비가 필요합니다.

천천히 따라해 보세요.



1-1) 총 장착해보기



무료로 배포되고 있는 총을 구해서 불러와 보겠습니다.

저는 지난시간에 있어 다운받은 파일을 이용하겠습니다.






사용할 무기를 선택 후 드래그앤 드랍을 통해서 캐릭터의 Rweaponholder 자식으로 넣어줍니다.

이 모델은 친절하게도 총이 장착할 부분을 만들어 놓았지만, 대부분 없으니 손정도의 위치에 넣어주시면 됩니다.





총을 장착해주면 비틀어진 모습이 보일겁니다. 간단한 위치조정이 필요하겠죠?

애니메이션 실행 중 확인하는게 확실하기 떄문에 게임을 시작하거나 일시정지하여 위치조정을 해봅시다.

이 때 중요한건 게임 실행시 저장했던 값들은 다시 초기화가 된다는 점입니다. 이 점 유의 하셔서 저장한 값은

Copy Component하셔서 붙여넣어 주시는걸 추천드립니다.






1-2) 총알 만들기



총알을 Import 시켜보겠습니다.






총알을 보시면 Y축 방향을 바라보고있습니다.

난감하네요. 캐릭터 시선 방향으로 바꾸고 싶은데 말이죠.

이 때 방법은 여럿 이겠지만 저는 빈 게임 오브젝트를 만들고 자식으로 두어서 회전시켜 보겠습니다.





이 때 중요한 것은 Transform 값을 초기화 시켜주어야 한다는 점입니다.

만약 하지 않을 경우 작업한걸 초기화시켜야 할 수 있습니다. 주의해 주세요.





총알를 X축 방향으로 90도로 회전시켜줍시다.






1-3) Rigidbody



총알에 물리효과를 주어야 피격효과를 줄 수 잇겠죠?

그러기 위해서는 총알 오브젝트에 Rigidbody를 추가해 주어야합니다.

Component => Physics => Rigidbody가 있습니다.







Rigidbody는 다음 속성으로 이루어져 있습니다.

* Mass : 질량

* Drag : 이동 마찰계수

* Angular Drag : 회전 마찰계수

* Use Gravity : 중력 적용 여부

* Is Kinematic : 물리엔진 영향 여부

* Interplate : 물리력 보간

* Collision Detection : 세밀한 충돌 검사에 사용


 




1-4) AddForce



BulletController 스크립트를 만들고, 코드를  작성해 봅시다.

총알의 데미지, 속도를 변수로 설정해 두고, Rigidobdy에 힘을 부여해 줍니다.

여기서 AddForce는 물리효과 힘을 부여해 주는 코드로써 Rigidbody를 가지고 있어야 동작합니다.






총알에 적용하면 총알이 계속 날아가는 모습이 보일거에요.

저는 하이어라키뷰에서 Bullet 오브젝트를 선택 후 단축키 FF를 연속으로 눌러 

카메라가 계속 따라가도록 만들었습니다.

게임 세계에서는 마찰력을 부여해 주지않는 한 계속 날아가기에 

일정거리가 지나면 없어지는 코드도 추가해줘야겠네요.






1-5) Collider



충돌을 하기 위해서는 두 물체가 Collider가 존재해야 합니다.

Collider는 Sphere, Capsule, Box 등 다양하며 Sphere > Capsule > Box Collider 순으로 

연산처리 속도가 달라집니다.

총알에는 Sphere Collider를 추가해 보겠습니다.

툴바 Component => Physics => Shpere Collider를 선택해서 추가해 보겠습니다.

게임을 실행시키면 총알이 벽을 뚫고 가지 못하는걸 볼 수 있습니다.







2. 마무리



이번 시간에는 총알을 만들고 물리효과를 주어서 벽에 충돌시켜보았습니다.

다음 시간에는 다양한 효과들을 추가해주겠습니다.

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Basic

댓글

Designed by JB FACTORY