본문 바로가기

Unreal/Udemy 강의

Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-10

Bullet Fire Aim Factor

기존 FPS 게임 같은 경우 사격을 하다보면 반동으로 인해 조준점이 흔들린다.

따라서 이번에는 사격 시 크로스헤어가 확산되도록 조정해보자.

이를 위해 필요한 변수는 사격 시간, 사격 여부, 사격 타이머 이렇게 3가지이다.

 

마찬가지로 생성자에서 초기화 해주자.

 

사격 시작과 마침을 알리는 함수를 생성해주자.

시작 함수에서는 SetTimer를 ShootTimeDuration 동안 타이머를 발동하고 마침을 알리는 함수를 호출해주자.

 

이제 StartCrosshairBulletFire() 함수를 FireWeapon() 마지막에서 호출해주자.

 

이후 확산도를 계산하는 부분에서 사격 여부를 나타내는 bFiringBullet 변수를 통해 값을 설정해주고 이를 더해주자.

 

추가적으로 현 상태에서 모서리를 조준했을 시 조준 시와 평상 시 에임이 Y 축으로 차이가 나는 모습을 볼 수 있다.

이는 우리가 기존 크로스헤어의 Y 값을 50만큼 빼주었에 발생한 일이다.

이를 수정하고 싶으면 HUD 클래스에 해당 부분과 C++ 클래스에서 GetBeamEndLocation 함수의 해당 부분을 지워주자.

기존 / 변경

 

Y값을 50만큼 빼주는 것 보통 플레이어의 시야와 총구의 위치가 일치하지 않을 때 보정하기 위해 사용된다.

또는 이렇게 수정해주는 것이 더 자연스러울 때도 있고, 시야각 보정을 위해 할 때도 있다.

이번에는 없애주었지만 그대로 두는 것이 나을 수도 있다.