Unreal

[Unreal] 4월 18일 수업정리

k-codestudy 2025. 4. 18. 15:06

player state, 구조체, 플레이어 컨트롤러에 대한 수업을 들었다.

 

Player State 세팅

편집 -> 프로젝트 세팅 -> 맵 & 모드 -> 기본 게임모드를 보게 되면 BP_ThirdPersonGameMode가 꽂혀있는것을 확인할 수 있다. 이 세팅값 떄문에 다른 맵으로 이동을 해도 BP_ThirdPerson이 불리게 되는 것이다.
게임 모드 오버라이드 : 각각 맵별 매니저를 세팅하는 공간
Player State를 하나 만들어 준다.

간단한 구현

1번을 누르게 되면 bp-Player-State의 new var라는 변수값을 10으로 변경 / 2를 누르게 되면 bp-Player-State라는 변수값을 출력 ( Get Player State는 말 그대로 player State를 얻어오는것 )
실행 결과
Get Player State를 하나하나 일일히 꽂아주기에는 너무 번거롭기 떄문에 BeginPlay가 실행이 되면 get Player State로 Player State를 백업
백업해준 것을 연결해서 사용하게 되면 좀 더 쉽게 사용이 가능하다

 

Player State 불리는 순서

bp-Player State
BP_ThirdPerson
실행을 하게 되면 Player State가 먼저 불리고 Player가 나중에 불리게 된다 즉, Player State가 먼저 불리기에 플레이어를 알 방법이 없다 -> 이것을 해결하기 위해 매니저에 Player를 등록하는 방식으로 만들어야한다.
플레이어 하나를 드레그 앤 드랍으로 둔 후 auto Possess Player를 Player0( 0번은 무조건 Player Controller 이다. )으로 설정한 후 실행
Player State보다 Player가 먼저 불리게 된다. / 생성 타이밍이 다르기에 드래그 앤 드랍으로 꺼내서 쓰지 말고 스폰하는 방식으로 사용하자
bp-gameState : bp_ThirdPerson을 함수 오브젝트 레퍼런스로 생성해 백업
BP_ThirdPerson : bp-playerstate를 형변환해 M-Player State에 저장하고 e-set Player 이벤트를 불러온다.

Player State와 구조체

구조체 생성
변수 추가를 눌러 구조체를 생성
디폴트 구조체 값 설정
변수 m-State생성 ( 변수 타입은 s-State )
1을 누르게 되면 Set memebers in s-State를 이용하여 s-State의 Var 4의 값이 100으로 변경 / 2를 누르게 되면 Break s-State를 이용하여 Var4의 값을 출력
이 방식으로 하게 되면 값이 전부 바뀌게 됨으로 위와 같이 set member in s-State 사용
Get s-State를 핀분할로 해서 값을 출력해도 무방
실행 결과
함수 만들기 -> 입력 -> 변수 추가 -> 참조전달 on -> Ref로 변경 ( 다이아몬드 모양 : Ref / 동그라미 : Call By Value )

 

Player Controller

기본적으로 Player Controller는 무조건 한개의 셋팅만 적용이 된다.

내가 조작하는 플래이어와 상호 작용

Possess ( 빙의 ) : 다운 캐스팅을 해서 ThirdPerson을 백업하여 사용
다른점 : 원래는 다운 캐스팅이 필요한데 game controller에서 직접 구현하는 것이기에 self 로 넣어주면 된다.
다른점 : 여기도 마찬가지로 Controller에서 직접 작업하는 것이기에 Add Yaw Input / Add Pitch Input으로 교체해 준다.
다른점 : 여기는 Target의 속도를 조절하는 것이기에 m-ThirdPerson을 Target에 연결해 알려준다.
다른점 : movement와 동일

'Unreal' 카테고리의 다른 글

[Unreal] 4월 22일 수업정리  (0) 2025.04.22
[Unreal] 4월 21일 수업정리  (0) 2025.04.21
[Unreal] 4월 16일 수업정리  (0) 2025.04.16
[Unreal] 4월 15일 수업정리  (0) 2025.04.15
[Unreal] 4월 14일 수업정리  (0) 2025.04.14