언리얼4 C++ 멀티플레이 캐릭터 애니메이션

Intro

  • 멀티플레이 캐릭터 애니메이션

멀티플레이

한 서버에 2개의 클라이언트가 접속해있을때 자신의 상태를 다른 클라이언트에 알려주지않으면 각각 클라이언트는 다음과같이 다른 플레이 화면을 보게된다.

클라이언트 1

1

클라이언트 2

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;
}

서버에서 호출되는 함수를 만들고 서버에서 멀티캐스트 함수를 호출함으로써 , 각 클라이언트에 전송되어 클라이언트 둘 다 달리는 애니메이션이 재생된다.

실행 결과

3

참고문서

http://api.unrealengine.com/KOR/Gameplay/Networking/Actors/RPCs/

댓글남기기