본문 바로가기

프로젝트/Pollute

사람 플레이어 캐릭터

사람 플레이어 캐릭터에서 맡은 역할과 구현한 기능을 정리.

 

저주 옮기기와 쿨타임 적용 & 스테미나와 퀵슬롯에 픽업 아이템 이미지 넣기 등에 대해
해당 캐릭터를 소유한 클라이언트에서만 적용되도록 설계

 

 

1. 픽업할 아이템과 저주를 옮겨 받을 플레이어를 선택하는 함수

설명 : 박스 콜리전에 액터가 오버랩 되었을 때 아이템 & 플레이어라면 각각의 TSet 자료구조에 저장한다.

그 중 플레이어 카메라와 가장 가까운 액터를 최종 선택된 액터로 선택하고 해당 아이템을 픽업 가능하고 플레이어에게는 저주를 넘겨 줄 수 있다.

 

콜리전에 오버랩된 액터의 채널에 따라 각 자료구조에 저장한다.

 

TSet 자료구조에 각각 넣고 삭제하는 함수

 

TSet 변수에 포함된 요소들 중 플레이어 카메라와 가장 가까운 액터를 선택해서 반환한다.

 

 

 


 

 

 

2. 아이템 줍기 & 내려놓기 및 달리기 MaxWalkSpeed  동기화

아이템 줍기와 내려놓기에 사용되는 함수들

 

 

PickUpDropDown 함수로 먼저 서버에서 해당 플레이어가 아이템을 들고 있는지 확인한다.

아이템을 이미 들고 있다면 MultiCast 로 Detach 하고 손에 아이템이 없으면 PickUp 함수를 호출한다.

 

 

Attach 함수

아이템을 손에 있는 소켓에 부착하고 PlayerHUD 의 퀵슬롯의 아이템 이미지를 수정한다.

 

 

 

Detach 함수

아이템을 Detach 하고 UI 를 비롯한 변수들을 전부 초기화한다.

 


2 - 2 달리기 속도 동기화

 

달리기 및 속도 동기화에 사용된 함수들

 

 

달리기 버튼을 누르고 뗄 때에 호출되는 함수이고 bIsRunning 변수는 Replicated 되어 있기 때문에 서버에서 변경하여 동기화 시켜준다.

 

실제 이동함수 Move 에서 Server->NetMulticast 로 UpdateSpeed 함수를 호출하여 MaxWalkSpeed 를 동기화

 

 

 

 


 

 

 

 

3. 저주 옮기기

저주 옮기기에 필요한 함수

 

F 키 입력 시에 ServerRPC 로 저주를 옮기는 함수를 호출

 

서버에서 저주를 옮겨 받을 클라이언트와 현재 저주를 가진 플레이어의 상태를 변경

 

 

4. 공격 받았을 때 호출되는 함수

 

괴물에게 공격 받으면 HitMotage 를 실행하고 체력을 깍는다.

사망 시 DieProcess 함수를 호출

 

 

사망 시 로컬 클라이언트가 Controller 의 관전자모드로 변경하는 함수를 호출하여 Possess 스위칭한다.