
The Item Class지금은 총기가 1개이지만, 여러 총기를 다뤄보고 싶다.이를 위한 기반작업으로 Item Class를 생성해주자. 해당 총기는 필드에서 주워서 습득할 수 있게 하고 싶다.이를 위해서는 총기에 대해 충돌 이벤트가 가능해야 한다.이를 위한 Collision 작업을 해주자. 그리고 총기의 경우 애니메이션이나 복잡한 구조를 가지고 있어서 SkeletalMeshComponent로 다룬다.해당 변수 또한 선언해주자. 이를 생성자로 초기화 해주자.그리고 ItemMesh를 루트 컴포넌트로 만들고, 콜리즌 또한 붙여주는 작업을 해주자.

Jumping Animations기존에 점프 애니메이션이 없어서 이번에 추가해주도록 하자.먼저 이를 위한 스테이트 머신을 생성해주자. 그리고 아래와 같이 구성해주자.움직임 없음/걷는 중 -> 점프 -> 착지 모션이다. 이어서 규칙을 정해주고 Duration 값도 더 짧게 수정해주었다. Jump_Land -> Idle/Jogs 에는 2가지 조건을 걸었다.하나는 자연스럽게 넘어가도록 옵션을 걸었고, 나머지 하나는 In Air 여부이다.In Air 여부가 중요한 것이 Idle/Jogs -> Jumps로 넘어가는 애니메이션 순서를 확실하게 체크하기 위해 사용된다.착지 도중에도 여전히 In Air 상태인데, Idle/Jogs로 확실히 넘어가지 않고 Jumps로 넘어가는 사태가 발생할 수 있다.이러면 애니메이션..

Automatic Fire지금은 사격을 하면 단발로만 발사된다.이번에는 사격을 누르고 있으면 계속해서 사격이 유지되도록 수정해보자.먼저 사격 버튼 눌림 여부, 사격해야 하는가에 대한 여부, 자동 사격간 딜레이, 자동 사격에 대한 타이머에 대한 변수를 선언해주었다. 그리고 생성자에서 초기화 해주자. 필요한 함수들도 선언해주자.사격 버튼 눌렀을 때와 아닐 때에 대한 함수 및 타이머 세팅에 대한 함수,마지막으로 자동 발사 리셋에 대한 함수가 필요하다. 사격 버튼 눌렀을 때와 아닐 때에 대한 함수는 바인드 액션과 매핑해주자.기존에 Fireweapon() 함수를 FireButtonPressed() 함수로 대체하게 된다. 이제 각 함수들을 채워주자.먼저 FireButtonPressed() 함수는 버튼이 눌린 것을 ..

New Level Assets캐릭터 기반을 어느정도 다졌으니, 맵에 사용할 에셋을 다운로드하여 적용해주자.사용할 에셋은 Factory Environment Collection이라는 무료에셋으로, 용량이 상당하여 주의해야할 필요가 있다. 다운로드 후 프로젝트를 생성하고 해당 맵을 기존 프로젝트에 Migrate해주자. 그럼 이제 현재 프로젝트에 추가된 맵을 볼 수 있다.해당 맵을 열고 새로 저장해두자. 다음으로 게임모드를 기존에 만들어서 사용하던 것으로 교체해주자.

Bullet Fire Aim Factor기존 FPS 게임 같은 경우 사격을 하다보면 반동으로 인해 조준점이 흔들린다.따라서 이번에는 사격 시 크로스헤어가 확산되도록 조정해보자.이를 위해 필요한 변수는 사격 시간, 사격 여부, 사격 타이머 이렇게 3가지이다. 마찬가지로 생성자에서 초기화 해주자. 사격 시작과 마침을 알리는 함수를 생성해주자.시작 함수에서는 SetTimer를 ShootTimeDuration 동안 타이머를 발동하고 마침을 알리는 함수를 호출해주자. 이제 StartCrosshairBulletFire() 함수를 FireWeapon() 마지막에서 호출해주자. 이후 확산도를 계산하는 부분에서 사격 여부를 나타내는 bFiringBullet 변수를 통해 값을 설정해주고 이를 더해주자. 추가적으로 현 상태..

Crosshair Aim Factor이번엔 조준 시 확산도를 조정해주자.조준 할 때는 크로스헤어가 좁혀져야 하므로, 기존에 더해주던 것과 달리 이번엔 기존 값에 빼주게 된다. 그리고 기존의 조준 여부를 판별했던 bAiming 변수를 활용해 간단하게 구현이 가능하다. 추가적으로 확산에 관련된 변수들이 초기화를 해주지 않아 생성자에서 전부 초기화 작업을 해주었다. 이제 조준하면 크로스헤어가 좁혀지는 것을 볼 수 있다.