Post

UE - 빙의 다뤄보기

BP-Possess

UE - 빙의 다뤄보기

빙의 시스템 구현하기기

이번에 구현할 기능은 두 개의 캐릭터를 생성하고, F 키를 눌러 조종할 캐릭터를 변경하는 시스템이다.

싱글톤

두 캐릭터를 관리하기 위해 캐릭터 매니저를 생성했다. 싱글톤처럼 사용하려고 다양한 방법을 조사한 끝에 GameInstance에서 변수를 생성하는 방식을 선택했다다.

GameInstance란?

  • GameInstance는 게임 전체에서 공유할 수 있는 데이터를 관리하는 객체로, 게임이 실행되는 동안 유지됩니다. 이를 활용하면 월드에 배치할 필요 없이 데이터를 중앙에서 관리할 수 있다.

캐릭터 매니저 구현

객체 생성 :

  • GameInstance에 CharacterManager 변수를 생성했다.

  • CharacterManager는 월드에 배치할 필요가 없으므로 UObject로 구현했다다.

  • Unreal Engine 5.5에서는 Construct Object from Class 노드를 사용하여 UObject를 초기화할 수 있다.

기능 추가 :

CharacterManager는 다음 두 가지 주요 함수를 가지고 있다.

Add Character : 캐릭터의 BeginPlay에서 호출되며, 생성된 캐릭터의 참조값을 매니저에 전달한한다. 매니저는 이를 배열에 저장하고, 캐릭터에게 자신의 배열 인덱스를 알준다.

Swap Character : 플레이어 컨트롤러의 조종 대상을 변경하는 함수다. 현재 조종 중인 캐릭터에서 IA_ChangePawn 이벤트가 발생하면 이 함수를 호출하여 빙의 대상을 변경한다.

결과

문제점과 해결 방법

빙의 해제 후 캐릭터가 공중에 멈춰있는 문제

원인: CharacterMovementComponent가 가속도, 중력, 점프 등을 처리하다가 빙의가 해제되면서 작동을 멈추는 것으로 보인다.

해결: 빙의가 해제될 때 캡슐 컴포넌트의 Simulate Physics를 true로 설정했다.

빙의 해제된 캐릭터가 넘어지는 문제

문제: 물리 시뮬레이션 활성화 시 캐릭터가 넘어지는 현상이 발생했다.

해결: 캡슐 컴포넌트의 회전 축을 잠그는 설정으로 해결했다.

이것 말고도, 빙의가 해제될 때 캐릭터가 월드에 배치될 때의 방향으로 돌아간다.

이건 아직 원인을 정확히 파악하지 못했으며, CharacterMovementComponent와 빙의 시스템에 대해 추가 조사가 필요하하다.

결과

다음 목표

캐릭터 클래스와 빙의에 대해 좀 더 지식이 필요하다. 캐릭터 전환 시 카메라가 이동하며 시점이 자연스럽게 변환되는 기능을 구현할 예정이다.

This post is licensed under CC BY 4.0 by the author.