[UE5] Assassin17 - Cover Mode

윤정민·2023년 6월 22일
0

[Unreal Project]Assassin

목록 보기
18/26

1. 개요

플레이어가 암살을 위해 벽에 밀착해서 이동할 수 있는 기능을 구현해보자.

2. 아이디어

해당 기능과 관련된 내용은 모두 CoverMovementComponent에서 관리한다.
c를 입력하면 전방에 벽이 있는지 확인하고, 벽이 있다면 벽위치로 이동하고 좌, 우로만 움직일 수 있게 한다.
오른쪽 코너에서는 더 이상 오른쪽으로 움직일 수 없고, 왼쪽 코너에서는 더 이상 왼쪽으로 움직일 수 없다.

2.1. 벽 감지

  • 플레이어 캐릭터 전방으로 Trace를 생성해 벽이 있는지 확인
    • 벽이 있다면 MoveComponentTo함수를 사용해 플레이어를 벽과 밀착시킴, IsCover = true
    • 벽이 없다면 일반 Movement상태로 돌아감, IsCover = false

2.2. CoverMovement

  • 좌우 움직임 가능
  • 키가 입력되면 움직이는 방향에 벽이 있는지 확인
    • 벽이 있음
    • 벽이 없음

2.3. 예외 상황 방지

Cover상태에서 Montage를 실행하는 벽에서 벗어난 상태에서 IsCover = true가 지속되는 문제가 있다. 이를 해결하기 위해 Tick에서 등 뒤에 벽이 있는지 확인한다.

2.4. 벽에서 벗어나기

플레이어가 Shift를 눌러 움직임 키를 입력하게 되면 벽에서 벗어나게 된다.

  • 플레이어 속도가 walk속도인 300 이상일 시 IsCover = false
	if(Character->GetCharacterMovement()->MaxWalkSpeed > 300.f)
	{
		DisableCover();
	}

3. 실행 화면

profile
그냥 하자

0개의 댓글