작성
·
155
0
characternonplayer의 공격 애니메이션 rpc를 어떻게 해야할지 모르겠습니다
h:
UFUNCTION(Server, Reliable)
void ServerAttack();
UFUNCTION(Client, Unreliable)
void ClientRPCAttack();
cpp:
void ServerAttack_Implementation()
{
ProcessComboCommand();
ClientRPCAttack();
}
void ClientRPCAttack_Implementation()
{
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
AnimInstance->StopAllMontages(0.0f);
AnimInstance->Montage_Play(ComboActionMontage);
}
플레이어가 아닌 액터들의 rpc는 어떤식으로 진행해야하나요?
답변 1
0
클라이언트-서버 구조에서 AI 캐릭터는 서버의 전유물입니다. 왜냐하면 클라이언트가 가질 수 있는 것은 오로지 자신이 플레이하는 플레이어에 대한 정보 뿐입니다. Owner를 플레이어 컨트롤러로 설정한 액터만이 서버에 전송할 수 있습니다.
따라서 클라이언트에서 플레이어가 아닌 NPC는 서버로 전송이 불가능합니다. 대신 마치 플레이어의 악세사리나 무기와 같은 설정으로 오너를 설정하면 가능할 수는 있지만, 이는 기획에 따라서 의미가 있을 수도 있고, 없을 수도 있습니다.
범용 NPC라면 클라이언트는 철저히 무시되고, 서버에서 계산하고 플레이어에게 알려주는 것이 맞다고 보여집니다. 그런데 플레이어에 귀속되어 플레이어의 입력에 따라 행동하는 펫이라면 클라이언트에서 서버로 명령을 보내고 서버가 브로드캐스팅을 할 수도 있을겁니다. 이 경우에 펫에 관련된 명령을 보내는 액터의 Owner는 플레이어 컨트롤러가 되어야 서버로 RPC를 보낼 수가 있습니다.