언리얼4 C++ 멀티플레이 캐릭터 애니메이션
Intro
- 멀티플레이 캐릭터 애니메이션
멀티플레이
한 서버에 2개의 클라이언트가 접속해있을때 자신의 상태를 다른 클라이언트에 알려주지않으면 각각 클라이언트는 다음과같이 다른 플레이 화면을 보게된다.
클라이언트 1
클라이언트 2
클라이언트 1의 플레이어는 달리고있지만 클라이언트 2는 달리고있는 애니메이션이 나오지않는다.
함수 리플리케이션
다른 클라이언트에게 자신이 달리고있다는걸 알려주기위해 함수 리플리케이션을 통해 다른 클라이언트에 함수를 똑같이 실행시켜준다.
Sprint 함수 선언
////////// Sprint //////////////////////
UFUNCTION(Reliable, Server, WithValidation)
void StartSprintServer();
void StartSprintServer_Implementation();
bool StartSprintServer_Validate();
UFUNCTION(Reliable, NetMulticast)
void StartSprintMulticast();
void StartSprintMulticast_Implementation();
UFUNCTION(Reliable, Server, WithValidation)
void StopSprintServer();
void StopSprintServer_Implementation();
bool StopSprintServer_Validate();
UFUNCTION(Reliable, NetMulticast)
void StopSprintMulticast();
void StopSprintMulticast_Implementation();
Sprint 함수 구현
void ARaidPlayer::StartSprintServer_Implementation()
{
StartSprintMulticast();
}
bool ARaidPlayer::StartSprintServer_Validate()
{
return true;
}
void ARaidPlayer::StartSprintMulticast_Implementation()
{
GetCharacterMovement()->MaxWalkSpeed *= SprintSpeedMultiplier;
IsRun = true;
}
void ARaidPlayer::StopSprintServer_Implementation()
{
StopSprintMulticast();
}
bool ARaidPlayer::StopSprintServer_Validate()
{
return true;
}
void ARaidPlayer::StopSprintMulticast_Implementation()
{
GetCharacterMovement()->MaxWalkSpeed = 300.0f;
IsRun = false;
}
서버에서 호출되는 함수를 만들고 서버에서 멀티캐스트 함수를 호출함으로써 , 각 클라이언트에 전송되어 클라이언트 둘 다 달리는 애니메이션이 재생된다.
실행 결과
참고문서
http://api.unrealengine.com/KOR/Gameplay/Networking/Actors/RPCs/
댓글남기기