메트로배니아류의 게임에 필수적인 능력구현을 해 볼 것이다.
먼저 전에 대쉬 중 무적을 넣기 위해 기존의 반짝거리는 무적 대신 반짝이는 효과를 없앤 TriggerInvincibilityNOFlick 이벤트를 따로 만든다.
이를 대쉬 노드 가운데 함수를 호출한다.
이로서 대쉬 중 무적이 구현된다.
능력을 획득하는 Pickup 블루프린트를 만들고 위와 같이 박스 콜리전과 Sphere 스택틱 메쉬를 넣는다.
능력을 저장하는 열거형 블루프린트를 만든다음 우선적으로 구현할 Double Jump와 Throw 2가지를 추가한다.
능력이 더 추가로 생기면 추가로 만들 수 있다.
BP_Player에 변수를 추가하여 UnlockedAbilities로 이름짓고 변수형을 방금 만든 열거형 블프로 할당한다.
또한 함수도 추가하여 GainAbility로 이름짓고 위와 같이 AddUnique를 이용하여 처음 한번만 배열에 저장하는 함수를 만든다.
Pickup 블프에서 Box 콜리전과 오버랩시 이벤트를 추가하여 플레이어와 겹쳤을 때 Gain Ability 함수를 동작하도록 한다.
먹은 후에는 액터가 파괴되도록 한다.
플레이어의 GainAbility에서 Switch를 사용하여 어빌리티에 따른 분기를 형성한다.
이 중 더블 점프는 언리얼 엔진 자체에서 조정이 가능하므로 Set max Jump 함수를 가져와 점프 최대 수를 2로 조정한다.
이로써 DoubleJump가 있는 Pickup 오버랩시 점프 최대 수가 2로 세팅되어 더블 점프를 쓸 수 있게 된다.
다음으로 검을 던지는 능력을 위해서 BP_Sword 액터 블프를 만들고 위와 같이 ProjectileMovement를 추가하고
박스 콜리전과 FlipBook을 추가한다.
검이 돌아가는 에셋을 구해서 적용하였다.
Projectile에서 중력을 0으로 하고 최대 속도도 적당히 조절한다.
플레이어에 검을 던지는 입력을 Q버튼으로 추가로 만들었다.
위와 같이 Contains 함수를 추가하였는데 이는 배열에 특정한 값이 포함되어있는지를 Bool 변수로 출력하는 함수이다.
이를 사용하여 Unlock 된 능력안에 Throw가 있는지 여부를 확인한다.
True라면 SpawnActor를 이용하여 플레이어의 위치에 검을 스폰한다.
검이 벽에 히트 하고서 벽에 박히는 플립북으로 바뀌도록 했는데 위치 조정을 위해서 위와 같이 씬 컴포넌트를 추가하여 x축을 -30으로 조정하였다.
만약 박스 콜리전이 벽과 히트할 시 Set FlipBook 함수로 벽에 꽂혀있는 검 플립북으로 변경한다.
꽂히면 모션이 멈춰야 하므로 Looping을 False로 만들고 위에서 조정한 씬 컴포넌트 위치로 조정한다.
꽂힌 검을 플레이어가 밟을 수 있도록 콜리전을 Pawn과 Block 되도록 마지막에 바꾸었다.
날아가는 검이 한개만 존재하도록 위와같이 스폰된 액터를 변수로 저장하고
Is Valid 함수를 이용하여 이미 활성화가 되어있다면 이미 활성환 된 액터를 파괴하도록 하였다.
마지막으로 날아가는 검이 적을 타격시 데미지를 주도록 오버랩 이벤트를 추가하였다.
능력 PickUp 구분을 위해 주황색은 더블점프, 초록색은 검 던지기로 간단히 구분하였다.
능력 구현이 잘 적용된 것을 볼 수 있다.
'언리얼 - 게임 개발' 카테고리의 다른 글
첫 게임 개발(16) _ 적 강공격 및 투사체 구현 (0) | 2024.06.26 |
---|---|
첫 게임 개발(15) _ EQS 기초 (0) | 2024.06.24 |
첫 게임 개발 (13) _ 벽 슬라이딩, 벽 점프, 대쉬 구현 (0) | 2024.06.22 |
첫 게임 개발 (12) _ Inventory _ 체력 UI 구현 (0) | 2024.06.21 |
첫 게임 개발 (11) _ Inventory _ UI 및 체력시스템 설계하기 (0) | 2024.06.21 |