UE4의 BluePrint만으로 벽 걷어차기 구현

UE4의 BluePrint에서 벽 걷어차기를 구현해 봅시다.
이상하게도, 일본어로 UE4의 「벽차기」 「벽 점프」라고 조사해도 나오지 않았기 때문에 썼습니다.

벽차기의 구조는 자신이 자작하고 있는 게임, 유니티 짱 & 그레이 짱의 다음 번 체험판 버전의 기본 기능으로서 넣고 있는 것을, 그대로 싣고 있습니다.


구현에 있어서, 이하의 포럼을 참고로 하고 있습니다.
[블루프린트] Wall Jump fail

※「UE4 Wall Kick」이라고 검색하면 다른 것도 나옵니다.

전제 조건



이번에 기재하는 벽차기의 시스템은, 「3d」의 Side Scroller Template를 사용하고 있습니다.
로직은 BluePrint 전용입니다.
이번에는 Trace를 이용하는 방법으로 벽 검출을 구현합니다.
→Trace가 무겁고 이어라고 하는 사람은 벽에 오버랩용의 콜리전을 붙여 판정하는 등, 여러가지 방법이 있으므로 조사해 보세요.

벽 걷어차기의 흐름



이번에 실장한 벽차기의 처리는 대략 다음과 같습니다.

1. 공중에서 점프 버튼을 누릅니다.
2. 캐릭터의 약간 위쪽으로 반경 50의 SphereTrace 실행
3. WorldStatic 또는 WorldDynamic이 Trace에서 감지되면 Launch Character 노드를 실행합니다.

① SphereTraceForOBject에서 벽 검출



먼저 벽 결정을 위한 함수를 만듭니다.
SideScrollerCharacter라는 BluePrint 클래스(또는 Character를 상속한 클래스)를 열고 다음 이미지와 같이 함수를 만듭니다.


처리의 흐름으로서, GetActorUpVectoer에 100을 곱한 위치에, 반경(Redius) 50의 SpherTraceForObjects를 실행해, WorldStatic, WorldDynamic를 검출한다고 하는 내용이 되고 있습니다.
조작 캐릭터보다 약간 높은 위치로 하는 것으로, 지상의 WorldStatic, WorldDynamic를 검출하는 것을 막고 있습니다.

SpherTraceForObjects의 DrawDebugType에 For Duration이 선택되었지만 디버깅을 위해 Trace를 화면에 표시하는 것입니다.


디버그 이외로 화면에 표시시킬 필요는 없기 때문에, 릴리스할 때는 반드시 아래와 같이 DrawDebugType를 None에 지정해 주세요.


이제 벽 감지가 가능했습니다.

②벽차기(벽점프)용 함수를 작성



다음과 같이 점프에 대한 함수를 만듭니다.


CharacterMovement의 isFalling에서 캐릭터가 공중에 있는지 여부를 확인할 수 있습니다.
만약 지상에 있다면, Character의 Jump 함수로 캐릭터로 점프시킵니다.
공중에 있는 경우는 ①에서 작성한 함수(이미지의 경우 순수함수가 되어 있는 「Detect Wall」의 부분)를 호출하여 벽이 있는지 판단하고, 만약 벽이 있었을 경우는 Launch Character를 호출 대각선 방향으로 캐릭터를 약간 날리고 있습니다.

※Launch Character의 자세한 것은 공식 문서를 봐 주세요.

③ Jump의 입력 액션 이벤트에 ②에서 작성한 함수를 호출한다.



아래와 같이 Jump의 입력 액션에 ②에서 작성한 점프의 함수를 호출합니다.


이것으로 벽 걷어차기를 실장 할 수 있었습니다.

이 상태에서 벽 근처, 그리고 공중에 있을 때 점프 버튼을 누르면, 아래의 Gif와 같이 비스듬히 위쪽 방향으로 벽 차기(벽 점프)라고 생각합니다.


요약



그렇기 때문에, 방법만 알면 비교적 간단하고, 또한 범용적으로 사용할 수 있는 벽차기의 구조를 할 수 있었습니다.
벽 걷어차기, 벽 점프를 UE4에서 구현하고 싶다는 사람은 참고하십시오.

좋은 웹페이지 즐겨찾기