[Unreal] 19일차 - 총알 생성 및 발사, 총 모델링 사용, 총 교체 함수

2024. 8. 9. 02:07Unreal Engine

728x90
반응형

총알 만들기

총알 공장을 만들기 위해 Actor 블루 프린트를 생성하여 "BP_Bullet" 으로 이름을 설정했다.

 

 

블루프린트를 더블클릭하여 들어가서 Sphere 메쉬를 추가하고, Sphere Collision을 추가하여 Sphere Collision은 마우스로 드래그해서 Root Component로 만들었다.

 

 

SphereCollision의 [Collision Presets]는 [BlockAll]로 설정

 

 

그 밑에 Sphere 메쉬에게는 [NoCollision]으로 설정하여 같은 블루프린트 내에서 충돌이 일어나지 않게 한다.

 

 

SphereCollision의 [Sphere Radius]를 13으로 설정해서 콜라이더가 메쉬를 감싸도록 설정했다.

 

 

크기 조절을 위해서 BodyMesh의 Scale은 0.25로 맞추었다.

 

 

ProjectileMovement 검색하여 추가

 

 

Initial Speed, Max Speed를 500, Should Bounce를 체크하면 공이 튀는 효과를 볼 수 있다.

 

 

하지만 이렇게 하면 총알 느낌이 나지 않기 때문에 5000으로 높이고 Bounciness를 0.6에서 0.3으로 줄였다.

 

 


 

 

총알 발사

총알 발사하는 Input도 Jump 처럼 단발성 입력이기 때문에 IA_TPSJump를 복제하여 IA_TPSFire를 만들었다.

 

 

IMC_TPS에 IA_TPSFire를 등록하고 좌클릭을 Mapping 했다.

 

 

BP_Player로 와서, IA_TPSFire를 검색해서 노드 추가, Spawn Actor from Class 검색해서 노드 추가한 후 [Started] 노드를 연결한다. BP_Bullet class를 생성하도록 설정했다.

 

 

총구의 위치를 설정하기 위해서 Scene을 검색하여 Mesh의 하위에 놓고 "FirePosition"으로 이름을 변경했다.

 

 

FirePosition의 Transform을 설정했다.

 

 

FirePosition을 가져와서 World Transform으로 위치 값을 전달하면 총알이 잘 생성된다.

 

 


 

 

발사된 총알 없애기

 

 

BP_Bullet에서 [Details]에 life를 검색하면 [Initial Life Span]이 있다. 2.0으로 설정하면 2초 후 사라진다.

 

 

다른 방법으로는, Delay와 Destroy 노드를 통해서 2초 후에 사라지게 할 수도 있다.

 

 

또 다른 방법으로는, Timer와 Custom Function을 사용하여 아래와 같은 설정을 할 수도 있다.

 

 


 

 

총 붙이기

[Add] - [Add Feature or Content Pack...]으로 First Person 프로젝트를 가져온다.

 

 

SK_FPGun을 끌어다가 Mesh의 하위에 배치한다.

 

 

총의 Transform을 설정하고, FirePosition은 총의 하위로 옮긴다.

 

 

총의 Skeletal Mesh Asset을 더블클릭해서 들어가보면 Rig 되어있는 것을 볼 수 있다.

 

 

Grip_Bone에 우클릭해서 [Add Socket]하고, 이름을 "FirePosition"으로 바꾸었다.

 

 

그리고 위치를 총구 앞에 배치했다.

 

 

다시 블루프린트로 돌아와서, FirePosition을 선택했을 때, [Parent Socket]을 FirePosition으로 설정하면 Transform을 전부 0으로 놓으면 방금 설정했던 자리로 옮겨진다.

 

 

Socket 설정이 잘 되어있다면, 총을 끌어오고 [Get Socket Transform] 노드를 통해서 총알 생성 위치를 지정할 수 있다. 이제 Components 상의 FirePosition은 필요없어졌다.

 

 

총알이 잘 나온다.

 

 


 

 

스나이퍼 총으로 교체 함수

자료실에서 스나이퍼 총 압축파일을 받아 압축을 푼다.

 

lifeunreal5/자료실/3장/SniperGun .zip at main · araxrlab/lifeunreal5

인생 언리얼 5 프로젝트 교과서 . Contribute to araxrlab/lifeunreal5 development by creating an account on GitHub.

github.com

 

 

폴더 째 드래그 앤 드랍으로 프로젝트로 가져왔다.

 

 

sniper2 메테리얼에 텍스쳐를 적용한다.

 

 

BP_Player에 sniper 총 메쉬를 Mesh 하위에 넣는다.

 

 

스나이퍼 총 Transform 설정

 

 

IA_TPSFire를 복제하여 IA_GranadeGun, IA_SniperGun을 만들었다. 키보드 1번은 GrenadeGun, 2번을 누르면 SniperGun이 나오도록 설정한다.

 

 

IMC_TPS에서 키보드 1, 2 키를 설정한다.

 

 

처음 보여지는 총은 Grenade 총으로 설정할 것이다.

BP_Player로 와서, UsingGrenadeGun? 이름의 Boolean을 하나 추가하고 Visibility를 설정했다.

 

 

아직 실행하면 두 총이 모두 나온다.

총 바꾸는 노드들을 모두 잡아서 우클릭, [Collapse to Function]으로 하나의 함수로 만들었다.

 

 

만든 함수 안으로 들어가서, 오른쪽에 Inputs에 UseGrenade? Boolean을 하나 만들고 같은 체크박스를 받는 노드를 연결한다. NOT은 ! 검색으로 연결했다.

 

 

함수로 만들어서 블루프린트가 간단해졌다.

 

 

BeginPlay 맨 뒤에 만든 함수를 연결하면 초기 설정으로 GrenadeGun 또는 SniperGun을 선택할 수 있다.

728x90
반응형