如何利用ue4商城的ue4怎么导入资源包做游戏

韩国游戏公司 Project M 用&UE4 引擎做的 VR 美女养成游戏
原始标题:
Project&M是韩国公司E工作室用UE4引擎(Unreal Engine 4)开发的游戏。游戏提供了既有吸引力又现实的角色,各种各样的情节,以及电影般的故事叙述。这个游戏看起来相当令人沉醉,因为它的虚拟人物可以根据您的行为作出反应。请看下面的早期游戏设置视频。据韩国媒体,Project&M将在2017年发布Oculus Rift版本,在2018年发布PS版本。这款游戏还计划支持包括移动设备在内的其他平台。
VR资源网整理出品如何在UE4里开始制作一个真实的环境-GAD腾讯游戏开发者平台用UE4制作一个简单的AI小游戏 - 简书
用UE4制作一个简单的AI小游戏
UnrealEngine是一个非常强大的引擎,UE4基于DirectX11,拥有新的材料流水线、蓝图视觉化脚本、直观蓝图调试、内容浏览器、人物动画、Matinee影院级工具集、后期处理效果、热重载、模拟与沉浸式视角、实时游戏预览、AI人工智能、音频、中间件集成等一系列全新特性。下面是用C++结合蓝图实现一个简单的AI功能。效果如下图
首先创建一个C++的第三人称工程,UE4的工程有很多类型,我们可以根据自己的需要选择。
然后新建需要的C++文件,包括AIPatrol、AIPatrolController、AI巡逻的目标点AITargetPoint,类型分别为Character、Controller、TargetPoint。
将上述三个文件扩展成蓝图,这样C++和蓝图可以结合起来,比较方便的实现一些功能。
新建BehaviorTree、Blackboard。行为树用来实现AI的逻辑。
T98AAKVRE6]OVK5(AWG0A.png
在AIPatrol上加BehaviorTree:
UPROPERTY(EditAnywhere,Category=AI)//add behavior to character
class UBehaviorTree* BehaviorT
配置character的参数
characer.png
($$_]V}CV$-GAEQ5IIO7MOE.png
AIPatrolController.h文件:
/*behavior tree component*/
UBehaviorTreeComponent* BehaviorC
/*Our blackboard component*/
UBlackboardComponent* BlackboardC
/*Blackboard keys*/
UPROPERTY(EditDefaultsOnly, Category = AI)
FName LocationToGoK
UPROPERTY(EditDefaultsOnly, Category = AI)
FName PlayerK
//store all TargetPoints
TArray&AActor*& PatrolP
virtual void Possess(APawn* Pawn)
AAIPatrolController();
void SetPlayerCaught(APawn* Pawn);//caught:捕捉
/*Inline getter functions*/
FORCEINLINE UBlackboardComponent* GetBlackboardComp() const { return BlackboardC }
FORCEINLINE TArray&AActor* & GetPatrolPoints() const { return PatrolP }
.cpp文件:
AAIPatrolController::AAIPatrolController()
/*initialize blackboard and behavior tree*/
BehaviorComp = CreateDefaultSubobject&UBehaviorTreeComponent&(TEXT("BehaviorComp"));
BlackboardComp = CreateDefaultSubobject&UBlackboardComponent&(TEXT("BlackboardComp"));
/*Initialize blackboard keys*/
PlayerKey = "Target";
LocationToGoKey = "LocationToGo";
void AAIPatrolController::SetPlayerCaught(APawn* MyPawn)
if (BlackboardComp)
BlackboardComp-&SetValueAsObject(PlayerKey, MyPawn);
void AAIPatrolController::Possess(APawn* MyPawn)
Super::Possess(MyPawn);
/*Get reference to the character*/
AAIPatrol* AICharacter = Cast&AAIPatrol&(MyPawn);
if (AICharacter)
if (AICharacter-&BehaviorTree-&BlackboardAsset)
BlackboardComp-&InitializeBlackboard(*(AICharacter-&BehaviorTree-&BlackboardAsset));
/*Populate patrol point array*/
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AAIpPatrolPoint::StaticClass(), PatrolPoints);
BehaviorComp-&StartTree(*AICharacter-&BehaviorTree);
玩家被抓住的方法:AIPatrolController:void AAIPatrolController::SetPlayerCaught(APawn* MyPawn)//玩家被抓住
if (BlackboardComp)
BlackboardComp-&SetValueAsObject(PlayerKey, MyPawn);//给玩家添加key值
AIPatrol:
AAIPatrol::AAIPatrol()
//Initialize senses
/**UPawnSensingComponent :
* SensingComponent encapsulates(封装) sensory(感知) (ie sight and hearing) settings and functionality for an Actor,
* allowing the actor to see/hear Pawns in the world. It does nothing on network clients.
PawnSensingComp = CreateDefaultSubobject&UPawnSensingComponent&(TEXT("PawnSensingComp"));
PawnSensingComp-&SetPeripheralVisionAngle(90.0f);
// Called when the game starts or when spawned
void AAIPatrol::BeginPlay()
Super::BeginPlay();
if (PawnSensingComp)
/** OnSeePawn : Delegate to execute when we see a Pawn. */
PawnSensingComp-&OnSeePawn.AddDynamic(this, &AAIPatrol::OnplayerCaught);
void AAIPatrol::OnplayerCaught(APawn* Pawn)
/*Get a reference to the palyer controller*/
AAIPatrolController* AIController = Cast&AAIPatrolController&(GetController());
if (AIController)
GEngine-&AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("You having been caught!"));
AIController-&SetPlayerCaught(Pawn);
* 创建BTTask的C++文件,命名为BTSelectPatrolPoint。注意,这时要在Source文件夹中找到ProjectName.Build.cs文件,添加GameplayTasks到PublicDependencyModuleName中。.build.cs文件是编译文件,位于游戏性模块的根目录中,它定义了UnrealBuildTool编译该模块时要使用的一些信息。
29%{%@ZZL4N(}(LQYU5D-TF.png
EBTNodeResult::Type UBTSelectPatrolPoint::ExecuteTask(UBehaviorTreeComponent & OwnerComp, uint8 * NodeMemory)
//get AIPatrolController
AAIPatrolController* AICon = Cast&AAIPatrolController&(OwnerComp.GetAIOwner());
// check the get is successful
if (AICon)
//Get Blackboard Component
UBlackboardComponent* BlackboardComp = AICon-&GetBlackboardComp();
// get patrolPoint
AAIpPatrolPoint* CurrentPoint = Cast&AAIpPatrolPoint&(BlackboardComp-&GetValueAsObject("LocationToGo"));
TArray&AActor*& AvailablePatrolPoints = AICon-&GetPatrolPoints();
AAIpPatrolPoint* NextPatrolPoint =
// set NextPatrolPoint
if (AICon-&CurrentPatrolPoint != AvailablePatrolPoints.Num() - 1)
NextPatrolPoint = Cast&AAIpPatrolPoint&(AvailablePatrolPoints[++AICon-&CurrentPatrolPoint]);
NextPatrolPoint = Cast&AAIpPatrolPoint&(AvailablePatrolPoints[0]);
AICon-&CurrentPatrolPoint = 0;
// set blackboard keyValue
BlackboardComp-&SetValueAsObject("LocationToGo", NextPatrolPoint);
return EBTNodeResult::S
return EBTNodeResult::F
将BP_AIPatrol放入场景,摆放好BP_AIPatrolPoints,即AI 要走的路径,编辑BehaviorTree。
374539dd--b45d-5673aabe9863.png
BehaviorTree的思路是首先执行BTSelectPatrolPoint,如果没有找到目标,就move to key值为LocationToGo的点,如果找到了Target,就移动到Target处,然后在target处停留1秒。
最后,添加自动寻路组件NavMeshBoundsVolume,这样AI在寻路过程中就会自动绕开障碍物。}

我要回帖

更多关于 ue4场景资源 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信