[UE4]一个PlayerController控制多个Actor的问题

 

UE4中,一个PlayerController同时只能控制一个Actor,如果要实现RTS游戏中的那种多个Actor同时移动,需要Spawn出来多个Controller(PlayerController或者AIController等,具体看你需求),每个Controller去Possess一个Actor,然后通过控制这多个Controller来实现移动。

 

如何创建PlayerController,这个帖子讲了一种方式:
How do you place APlayerCharacter onto APlayerStart and take control?

https://forums.unrealengine.com/showthread.php?56494-How-do-you-place-APlayerCharacter-onto-APlayerStart-and-take-control

In CreateLocalPlayer's case, the call chain you're looking for is:

UGameInstance::CreateLocalPlayer
ULocalPlayer::SpawnPlayActor
UWorld::SpawnPlayActor
AGameMode::PostLogin
AGameMode::StartNewPlayer
AGameMode::RestartPlayer
AGameMode::GetDefaultPawnClassForController

 相关代码:

for( int32 a = 0; a < MaxPlayerCount; a++ )
{
	ULocalPlayer* localPlayer;

	if( a == 0 )
	{
		localPlayer = gameInstance->GetFirstGamePlayer();
	}
	else
	{
		FString createLocalPlayerError;
		localPlayer = gameInstance->CreateLocalPlayer( a, createLocalPlayerError, true );
	}

	FString url;
	FString spawnPlayActorError;
	localPlayer->SpawnPlayActor( url, spawnPlayActorError, currentWorld );
	FURL urlSpawn2;
	FString spawnError;
	PostLogin( localPlayer->PlayerController );
	currentWorld->SpawnPlayActor( localPlayer, ENetRole::ROLE_None, urlSpawn2, localPlayer->GetUniqueNetIdFromCachedControllerId(), spawnError );
	StartNewPlayer( localPlayer->PlayerController );
	RestartPlayer( localPlayer->PlayerController );

	/*ABasePlayer* playerActor = ( ABasePlayer* )GetDefaultPawnClassForController( localPlayer->PlayerController );
	ABasePlayerController* playerController = ( ABasePlayerController* )localPlayer->PlayerController;
	playerController->SetUpInput( playerActor, a );*/
}

但是上面的RestartPlayer找不到相关文档,怎么使用不是很清楚,另外一个替代RestartPlayer的方式:

http://aigo.iteye.com/blog/2285835

 

ULocalPlayer

https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/ULocalPlayer/index.html

 

UWorld::SpawnPlayActor

https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/UWorld/SpawnPlayActor/index.html

 

可参考官方的塔防项目:

https://docs.unrealengine.com/latest/INT/Resources/SampleGames/StrategyGame/index.html

 

另外一片关于UE4中实现RTS类型游戏移动逻辑的文档(蓝图)

RTS Movement and Basic Behaviors on Unreal Engine 4

http://blog.meltinglogic.com/2015/04/unreal-rts-rpg-movement-behaviors/

 

猜你喜欢

转载自aigo.iteye.com/blog/2284931