`
aigo
  • 浏览: 2694297 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

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

UE4 
阅读更多

 

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/

 

分享到:
评论

相关推荐

    UE4 Actor对象池插件

    在这个场景中,"UE4 Actor对象池插件"是一个专门针对UE4设计的工具,用于优化游戏性能,特别是处理大量动态对象的创建和销毁。对象池是一种内存管理策略,它预先创建并存储一组对象,当需要时可以从池中获取,而不是...

    UE4学习笔记----使用C++之控制球体运动并使用移动粒子效果(源代码)

    UE4提供了一个输入管理系统,用于接收和处理用户输入。在`CollidingPawn`中,可能有一个处理键盘输入的函数,比如`SetupPlayerInputComponent`,它会绑定输入事件到相应的动作。 9. **源代码组织**: 在UE4项目中...

    UE4教学教程.docx

    * 选“类默认值”,在“细节”面板中有个Pawn(象棋中的兵、卒),选Use Controller Rotation Pitch时,设为true后,如受PlayerController控制,此Pawn pitch将被更新来匹配控制器的ControlRotaton pitch。...

    UE4帮助文档 UE4离线帮助文档 UE4API

    UE4离线帮助文档是一个极其重要的资源,尤其对于那些没有稳定网络环境或需要高效查阅的人来说。"UE4API"文件包含了UE4的所有官方文档,包括接口、类、函数、变量、枚举等详细信息,为开发者提供了全面的参考指南。...

    UE4 UI制作.docx

    在 UE4 中,Pawn 是一个基本的 Actor,它可以被控制。我们可以新建一个 Pawn,并将其命名为 Camera。这样,我们就可以控制摄像机的行为。 添加摄像机 在 Viewport 中,我们可以添加一个摄像机。我们可以在蓝图类 ...

    UE4、UE5模型鼠标点击选中边缘高亮(UE5工程)

    可以创建一个自定义的数据结构(例如,一个Actor指针),并将其设为蓝图类的成员变量。当检测到新的模型被点击时,更新这个变量,并将之前选中的模型恢复原状。同时,可以为每个可选中的模型添加一个接口,使其能够...

    在多个固定摄像机视角间切换UE5切换多个摄像机,显示不同摄像机所看内容

    右键选择"Actor" -&gt; "Camera Actor",然后在场景中放置多个摄像机,每个摄像机代表一个固定的视角。 2. **配置摄像机**: 对每个摄像机进行必要的设置,如位置、角度、视场角等,确保它们分别可以看到场景的不同部分...

    UE4 描边材质 自定义深度通道

    在UE4(Unreal Engine 4)中,创建具有描边效果的材质是提升场景视觉效果的重要手段之一。描边材质通常用于突出游戏对象的轮廓,增加立体感和层次感,尤其是在2D或伪3D风格的游戏设计中尤为常见。本篇文章将详细探讨...

    ue4 联网配置

    通过以上详细讲解,我们可以看到UE4联网配置是一个复杂但有条理的过程,涵盖了网络架构、数据同步、错误处理等多个方面。理解并掌握这些知识点,能够帮助开发者构建出稳定且流畅的多人在线游戏项目。

    UE4离线官方中文文档

    10. **插件和市场**:UE4有一个丰富的插件和资产市场,允许用户扩展功能和获取预制资源。文档会介绍如何管理和使用这些资源。 11. **优化与性能**:针对游戏性能的优化是开发过程中的关键部分,文档会提供内存管理...

    UE4官方中文文档.rar

    《UE4官方中文文档》是Unreal Engine 4(简称UE4)用户的重要参考资料,它提供了详尽的技术指导和教程,帮助开发者深入了解和熟练运用这款强大的游戏开发引擎。UE4是由Epic Games开发并维护的,它在游戏、影视、建筑...

    UE4蓝图节点详细介绍

    总之,UE4蓝图节点覆盖了游戏开发的各个方面,为初级开发者提供了一个强大的工具集。通过理解和熟练运用这些节点,开发者可以创造出复杂的游戏逻辑和丰富的游戏体验。学习和掌握这些节点的使用是提升UE4开发技能的...

    ue4蓝图c++动态改变staticmeshactor材质例子动态修改纹理

    这是ue4 4.22.1 engine 版本的例子。...你需要先用ue4建立一个名字为a2的工程,然后用zip里面的source plugins 覆盖你建好的工程的目录。以达到迁移代码的目的。注意,可能建好的材质,要拖到场景里才生效。

    UE4/虚幻4-快速制作鱼眼镜头方法

    1. **创建相机组件**:在UE4编辑器中,首先需要创建一个新的Actor,并在其上添加一个CameraComponent。这可以通过在内容浏览器中右键点击,选择"Actor" -&gt; "Camera"来完成。然后在场景中放置并调整相机的位置和方向...

    深入浅出UE4网络 - Leonhard

    2. **Role的深层次解读**:在UE4中,每个Actor都有一个Role属性,用来指示该Actor在不同客户端之间的“角色”。例如,Authority Role表示该Actor由哪个客户端控制。理解这些角色的概念有助于开发者更好地设计网络...

    行动者 Actor Controller - An advanced character controller

    文件名为"Actor Controller - An advanced character controller 0.77.unitypackage",表明这是该控制器的一个特定版本(0.77)。UnityPackage是Unity中的资源打包格式,用于分享和导入项目中的资产,包括脚本、模型...

    UE4vs代码段.zip

    "UE4vs代码段.zip" 文件集合就是这样一个实用资源,它包含了一些预定义的代码片段,可以帮助开发者快速实现特定功能,提高开发效率。 首先,让我们详细了解一下这些代码段的具体内容: 1. **快捷创建碰撞事件的三...

    UE4 API chm格式的

    UE4 API的学习是一个深度和广度并重的过程,不仅需要理解每个接口的使用方法,还要熟悉其背后的引擎机制。通过深入阅读API文档,开发者可以更好地掌握UE4引擎,从而创作出高质量的3D应用。同时,由于文档是英文版,...

    UE4艺术大师:蓝图 全套

    《UE4艺术大师:蓝图 全套》是一个深入学习Unreal Engine 4(UE4)蓝图系统的资源集合。蓝图是UE4中一个强大的可视化编程工具,它允许艺术家、设计师和程序员通过图形化界面来创建游戏逻辑,而无需编写C++代码。这个...

    UE4引擎浅析

    通过继承UE4的Actor类,可以快速创建具有物理属性、动画和行为的实体。 2. **组件系统**:UE4的组件系统是基于C++的,开发者可以创建自定义组件来扩展对象的功能,如碰撞组件、动画组件、AI行为树组件等。每个组件...

Global site tag (gtag.js) - Google Analytics