3D游戏开发之在UE4中建立非玩家角色(NPC)

 

接着上节咱们继续学习,如今咱们来建立一些NPC(non-playable characters,非玩家角色)。在这个游戏中,当咱们靠近NPC时,它们会作出相应的反应。浏览器

一 建立C++类

1) 在UE编辑器中,打开文件-新建C++类,选择从Character(角色)类继承,而后命名子类为NPC。编辑器

2) 编写代码。打开NPC.h文件:
添加头文件:(注意包含头文件必须在#include "NPC.generated.h"这一行前面加)ide

#include "UObjectGlobals.h"

在原来的代码基础上添加以下代码:函数

public:
//在目录Collision下建立球体属性(随处可见,蓝图只读),该属性用做碰撞体
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Collision) USphereComponent* ProxSphere;
//在目录NPCMessage下建立字符串属性(随处可见,蓝图可读写)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = NPCMessage) FString NpcMessage;

说明:FString是UE4的专用字符串类型,当你在UE4中开发游戏中,应该优先使用FString而不是STL里面的String。由于UE4的FString等内置类型保证了跨平台功能。工具

3) 从新编译UE4项目。学习

二 建立蓝图类

1) 在内容浏览器,右击NPC类,而后从这里建立一个蓝图类。注意给每一个蓝图类都命名一个独有的名字,由于以后咱们给不一样的NPC赋予不一样的模型网格和不一样的消息。字体

2) 如今打开蓝图编辑器,选择从添加组件中选择Mesh网格,而后在细节面板更改Skeletal Mesh(骨骼网格)为SK_Mannequin。ui

3) 像以前同样调整胶囊碰撞体到适合位置。spa

4) 在组件面板中选择蓝图自身。而后在默认选项卡,找到NpcMessage属性。这是从咱们C++代码中建立的属性而且能够在蓝图中应用。在UPROPERTY()函数里面添加了一个NpcMessage的字符串变量,而且指定了在蓝图类中可读写,因此在细节面板中能够进行编辑了。3d

5) 你能够继续建立一个NPC蓝图类(或者直接从原来的NPC蓝图类中复制一个新的蓝图类),而且能够分别设置不一样的NPCMessage。接着将这两个蓝图类拖动到场景中。

接下来咱们讲解如何将每一个NPC自身的消息在游戏中显示给玩家看。

三 UE4建立平视显示器(HUD)

为了展现对话框,咱们须要自定义一个HUD(heads-up display,即平视显示器)。

什么是HUD?
HUD是平面显示界面,就是平时咱们玩3D游戏提供给玩家的2D菜单界面。HUD类提供了渲染文字、贴图、矩形和材质的渲染,建立后也能够经过蓝图来编辑。

建立HUD子类

1) 点击文件-新建C++类;(简单的步骤咱们就再也不截图了,相信你们也都知道怎么操做了)

2) 选择从HUD类继承来建立咱们本身的类;

3) 给你的类命名,在我这里命名为MyHUD。建立好后就会自动打开VS开发环境。

在VS编辑代码

在MyHUD.h中里面添加以下代码:

 

UCLASS()
class MYFIRSTCODE_API AMyHUD : public AHUD
{
	GENERATED_BODY()
public:
	// 添加字体属性(随后咱们在蓝图编辑器中设置字体类型)
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = HUDFont) UFont* hudFont;
	// 下面这个重载函数每帧会被调用一次,在这个函数的定义里面来渲染字体
	virtual void DrawHUD() override;
};

 

在MyHUD.cpp中添加以下代码:

void AMyHUD::DrawHUD()
{
	// 先调用父类DrawHUD()函数
	Super::DrawHUD();
	// 接下来就渲染东西
	// 下面是画一条从(200,300)到(400,500)的蓝线:
	DrawLine(200, 300, 400, 500, FLinearColor::Blue);
	// 下面写一行文字(参数分别为文字、位置、字体、缩放、颜色):
	DrawText("UE4 is very interesting!", FVector2D(0, 0), hudFont, FVector2D(1, 1), FColor::White);
}

四 在蓝图编辑器设置字体

1) 点击工具栏的蓝图-游戏模式-HUD:HUD-建立-MyHUD,来建立一个蓝图类,名字改成BP_MyHUD。

2) 在右侧的细节面板中选择字体:

 

3) 保存退出,而后打开以前建立的游戏模式的蓝图类:

4) 在HUD class中选择BP_MyHUD做为咱们的默认HUD。

最后,你能够运行来看看HUD的效果:

未完待续

相关文章
相关标签/搜索