2 - 实现角色


先决条件页面

在阅读本页面前应对以下页面有所了解,如尚不了解,则请先浏览以下页面。

1 - 设置项目

上图是该部分完成后的效果。

目标

此部分旨在说明如何实现第一人称射击游戏中的角色。

目的

完成此部分教程后您将学会:

制作新角色

设置轴映射

实现角色移动函数

实现鼠标摄像机控制

实现角色跳跃

为角色添加模型

更改摄像机视图

为角色添加第一人称模型




2.1 - 制作新角色

在此步中,我们将使用引擎的 Character 基类制作一个新角色。Character 类(派生自 Pawn 类)内置有双足移动功能,如行走、奔跑、跳跃。:


添加 Character 类

可手动添加 *.h 和 *.cpp 文件到 Visual Studio 解决方案,较好的做法是使用 C++ 类向导将新类添加到项目。使用 C++ 类向导后,引擎将创建头和源模板,用于设置虚幻引擎专属的宏。

1.在 File 菜单中,选择 New C++ Class... 选择新的父类。


2.Choose Parent Class 菜单将打开。向下滚动,将 Character 选为父类并点击 Next。

3.将新建的类命名为“FPSCharacter”,然后点击 Create。

创建 FPSCharacter 类后,即可切换到 Visual Studio,为新建的类添加代码。FPSCharacter.h 和 FPSCharacter.cpp 将打开,虚幻引擎将自动编译并加载新类的代码。




创建角色类

1.在 Solution Explorer 中展开 FPSProject > Source > FPSProject。


2.双击 FPSCharacter.cpp 打开 FPSCharacter 类的实现文件。

3.在 BeginPlay() 函数中添加以下代码行,验证使用的是 FPSCharacter 类。

if (GEngine)

{

// 显示调试信息五秒。-1“键”值(首个参数)说明我们无需更新或刷新此消息。

GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));

}

4.FPSCharacter.cpp 应与以下代码相似:

// 在 Project Settings 的 Description 页面填入版权声明。

#include "FPSProject.h"

#include "FPSCharacter.h"

// 设置默认值

AFPSCharacter::AFPSCharacter()

{

// 设置此角色每帧调用 Tick()。不需要时可将此关闭,以提高性能。

PrimaryActorTick.bCanEverTick = true;

}

// 游戏开始时或生成时调用

void AFPSCharacter::BeginPlay()

{

Super::BeginPlay();

if (GEngine)

{

// 显示调试信息五秒。-1“键”值(首个参数)说明我们无需更新或刷新此消息。

GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter."));

}

}

// 每帧调用

void AFPSCharacter::Tick( float DeltaTime )

{

Super::Tick( DeltaTime );

}

// 调用后将功能绑定到输入

void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)

{

Super::SetupPlayerInputComponent(InputComponent);

}

5.在 Visual Studio 中保存 FPSCharacter CPP 文件。

6.在 Solution Explorer 中找到 FPSProject。

7.迄今为止,您便已使用编辑器的 Build 按钮编译项目。在这步中,您将使用 Visual Studio 的构建功能编译代码。编译代码的方法:在 Visual Studio 中右键单击 FPSProject,选择 Build 编译项目。

8.构建完成后,打开虚幻编辑器验证新编译的 FPSCharacter 类在 Content Browser 中可见。




将 CPP FPS Character 类扩展为蓝图

现在即可将 CPP FPS Character 类扩展为蓝图。在 C++和蓝图 参考页面中可了解 C++ 类扩展为蓝图的更多内容。

1.右键单击 FPSCharacter 类打开 C++ Class Actions 菜单。

2.点击 Create Blueprint class based on FPSCharacter 打开 Add Blueprint Class 对话菜单。

3.将新蓝图类命名为“BP_FPSCharacter”,选择蓝图文件夹,然后点击 Create Blueprint Class 按钮。


4.现在 Blueprints 文件夹中便拥有了一个新建的 BP_FPSCharacter 蓝图类。

5.关闭蓝图编辑器之前须保存 BP_FPSCharacter 蓝图。




设置默认 Pawn 类

将新建游戏模式成功扩展为蓝图后,此步骤中我们需要设置项目将 BP_FPSCharacter 用作默认 Pawn。

1.在 Edit 菜单中点击 Project Settings。

2.在 Project Settings 标签左侧的 Project 标题下点击 Maps & Modes。

3.在 Default Pawn 下拉菜单中选择 BP_FPSCharacter。


4.关闭 Project Settings 菜单。

5.点击关卡编辑器工具栏中的 Play 按钮。“We are using FPSCharacter.”将以红色文本在视口左上角的“Hello World, this is FPSGameMode!”下方显示五秒。

如您无法移动,即意味着 FPSCharacter 已正确用作 Pawn!新建角色尚未包含移动功能键,因此无法在关卡中移动。

6.按下 Esc 键或点击关卡编辑器中的 Stop 按钮退出 Play in Editor(PIE)模式,然后前往下一步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 我美吗? 宝宝的图只剩下这些图了 不过还是没有我美哈哈哈哈
    卡哇伊的蚊子阅读 156评论 0 1
  • 精进 即可以享受一个人独处的乐趣,又随时可以融入身边的圈子的乐趣。这是一种必备的能力 感受 身边有很多优秀的人,拥...
    若兰ZHOU阅读 75评论 0 1
  • 夜划过每一寸肌肤 孤独 蔓延 白天拯救了孤独 于喧闹中隐匿 夜晚释放了孤独 独自撒开了欢 自言 自语 寻找着生命的意义
    关耳方阅读 256评论 9 5
  • 今天偶然间打开QQ空间觉得挺好玩的,在这里分享给大家。顺便吐槽下上海的天气,那么多年没有过的高温!这次一股劲儿居然...
    汤增雷阅读 205评论 0 1