[Unreal] 20일차 - Sniper 레이저 총알 발사, 폭발 효과, 크로스헤어 UI, 총알에 물리 부여

2024. 8. 13. 22:44Unreal Engine

728x90
반응형

총 종류에 맞는 총알 발사하기

BP_Player에서, 총을 발사하는 노드를 함수로 만들기

 

 

+ 버튼 눌러서 "FireSniper" 함수 만들기

 

 

노드를 배치하여 Using Grenade Gun?이 참일 때는 원래 총알을, 거짓이라면 레이저 같이 나가는 총알을 생성하도록 한다.

 

Triggered에서 Started로 수정.

 

 

FireSniper 함수 내에서 [Line Trace By Channel] 노드를 추가한다. Trace Channel이 Visibility로 되어 있다는 것은 Collision Presets에서 Visibility가 Block으로 설정되어 있는 오브젝트를 검출한다는 말이다.

 

 

왼쪽 입력 노드들을 보면, Line Trace의 Start 부분은 카메라의 월드 포지션으로부터 시작한다.

End 부분은 시작 부분에 카메라 Forward 방향에서 ShotDistance 프로퍼티를 곱한 값을 더해서 거리를 설정해준다.

 

 


 

 

LineTrace 되었을 때 폭발 효과 추가

[Line Trace By Channel] 노드의 출력 파트를 보면, Return Value 값이 있을 때. 즉, 부딪히면, [Spawn Emitter at Location]을 통해서 "P_Explosion"을 생성하도록 설정했다.

 

 

ShotDistance는 10000으로 설정.

 

 

총이 바뀌면서 총알도 바뀌는 것을 볼 수 있다.

 

 


 

 

크로스 헤어를 이용해 스나이퍼 모드 만들기

Content 폴더 하위에 UI 폴더를 하나 만들었다.

마우스 우클릭 - [User Interface] - [Slate Widget Style] 선택

 

 

만든 위젯을 더블클릭하면, UI 편집 화면이 나온다.

[Canvas Panel]을 드래그 해서 패널을 먼저 깔고, Image를 드래그해서 이미지를 깔고, 이미지는 Anchors 설정으로 캔버스에 가득 차게 만든다. Offset 값을 모두 0으로 하면 캔버스에 가득 차게 된다.

 

 

이미지의 [Brush] - [Image]에 사용할 크로스헤어 이미지를 넣고 [Size To Content]를 체크한다.

 

 

이미지가 찌그러지기 때문에 Anchors를 가운데로만 바꾸고 Position X, Y를 0 설정, Alignment를 0.5, 0.5로 하면 화면보다 이미지가 커지지만 가운데에 크로스헤어가 찌그러지지 않고 위치하는 것을 볼 수 있다.

 

 


 

 

Ctrl 키를 눌렀을 때 스나이퍼 스코프 UI가 보이도록 설정

IA_GrenadeGun을 복제하여 IA_SniperScope를 만들었다.

 

 

IMC_TPS에 새 Mapping을 추가한 후 IA_SniperScope 추가, Left Ctrl을 키로 등록한다.

 

 

BP_Player 수정

화면에 스코프 뷰가 보여지게 하기 위해서는 아래의 노드 설정을 하면 되는데 이렇게 되면 다시 Ctrl을 눌렀을 때는 원래대로 돌아가지 않는다. 수정해야 한다.

 

 

BeginPlay 부분 뒤에 [Create WBP Sniper UI Widget] 노드를 잘라와서 붙이고 [Return Value] 출력 부분을 Promote to Variable로 바꾼다.

 

 

Variable 이름은 Sniper UI로 바꾸었다.

 

 

이후 다시 돌아와서 이미 화면에 올라가 있는 UI를 특정 키를 눌러 Started 되었을 때 뷰포트에 보이게 하고, Completed로 되었을 때, 즉 버튼을 뗄 때 지워지게 한다.

 

 

잘 된다.

 

 

(BeginPlay 전체 코드)

 

 

조준점이 너무 가운데라서 SpringArm의 Transform 수정

 

 


 

 

FOV 수정을 통한 줌인 줌아웃 효과 주기

간단하게, 바로 위에 노드에서 살짝 노드를 더 추가하면 된다.

 

 


 

 

총알과 피사체에 물리적인 힘 가하기

피사체인 큐브의 Details에서 [Simulate Physics]를 체크하여 켠다.

 

 

BP_Player에서 노드는 아래와 같다.

Line Trace 출력 부분에서, [Is Simulating Physics] 노드로 Is Simulating 설정된 오브젝트에만 맞았을 때, True이면 Force를 해당 지점에 준다. 이 때의 Target도 Hit 된 Out Hit Hit Component이다.

Force는 카메라의 Forward 방향으로 Shot Power 프로퍼티를 곱한 값이며, 이 힘이 작용하는 부분은 맞은 부분인 Out Hit Impact Point가 된다.

 

 

완성!

728x90
반응형