
캐릭터의 기본 점프 높이를 변경하는 방법은 간단합니다. CharacterMovementComponent 안의 JumpZVelocity 값을 수정해주면 됩니다.
이번에는 총알을 발사하는 액터를 만들어봅니다. 언리얼에서 UProjectileMovementComponent를 사용하면 탄환, 화살 같은 발사체를 쉽게 구현할 수 있습니다.
PlatformBullet이라는 이름으로 Actor를 하나 생성합니다.

StaticMesh를 구체(Sphere)로 만들고, 피벗을 센터로 설정합니다.

헤더에서 구체 Mesh와 충돌체 Body를 멤버 변수로 추가합니다.

이때 #include "Engine.h"가 필요합니다.

추가로 ProjectileMovementComponent 멤버 변수를 선언합니다.

ProjectileMovement에는 충돌 시 호출되는 델리게이트가 있습니다.

FOnProjectileStopDelegate 타입이며, const FHitResult&를 인자로 받아 충돌 결과를 처리할 수 있습니다.
→ 즉, 총알이 어디에 부딪혔는지 확인하고 이벤트를 연결하는 용도입니다.
아까 만든 구체 Mesh 경로를 지정합니다.

콜리전 반지름도 설정합니다.

언리얼 충돌 시스템에는 3가지 상태가 있습니다.

기본값은 OverlapAllDynamic 입니다.
프로젝트 세팅 > Collision에서 전체 채널을 확인할 수 있습니다.

BlockAll로 바꾸면 모든 액터와 충돌합니다.

충돌 시 Hit 이벤트가 발생합니다.

Bounce 옵션을 켜면 벽에 부딪힐 때 튕깁니다.

탄성(Bounciness) 값을 조절해서 반사 속도를 조정할 수 있습니다. (1이면 속도 손실 없음)

충돌 후 액터 제거도 가능합니다.

캐릭터 앞쪽으로 총알이 나오도록 PlatformCharacter.cpp에서 PlatformBullet을 스폰합니다.

스폰 방식에는 여러 가지 옵션이 있습니다:

PlatformBullet.cpp에서는 mBody의 Collision을 다시 정의해줍니다.
이제 캐릭터가 공격 키를 누르면 앞쪽으로 총알이 발사되고, 벽에 부딪히면 튕기거나 제거되는 모습을 볼 수 있습니다.

JumpZVelocity로 조절UProjectileMovementComponent로 구현