《FPS开发日记》二:角色创建和第一人称摄像頭

文章目录[x]
  1. 1:所以本章你将学到:
  2. 2:一,按键绑定。
  3. 3:二,创建个第一人称游戏角色与

从这章开始我们将从零创建个

FPS(first person shoot)游戏。

 

 

关于射击游戏的种类我以后会出个文章详细讲解。

我先说说FPS游戏制作的简单原理。

我们在玩许多FPS的时候可能都会认为自己在控制1个完整的人物。但其实你留心发现的话,你把视角往下看却看不到你的脚,你只能看到你的手臂而已。所以大多数FPS的制作其实都是只做手臂的动画而已。让人以为自己在控制整个人物。事实上只控制手臂而已。但为啥看别人是全人物的呢?那是因为我们准备了两套模型,及两套网格(Mesh)。一个给自己看(手臂),一个给别人看(全身)。很多人会问为什么要这样做?这样做的好处是:

一,有很强带入感。因为如果是全模型的话,会考虑整个手臂动作于身体的兼容性。看起来就可能会比只有手臂的动作僵硬些。

二,优化会比全模型的好一点。也易于操作。

缺点:

看不到自己的脚,只能看到手臂。但无伤大雅。

 

 

所以本章你将学到:

一,按键绑定。

二,创建个第一人称游戏角色与

摄像机跟踪。

首先,新建个项目,如图选择空项目,选好保存目录。(注意名字要全英文)

创建好后。打开虚幻4,在左上角文件里新建个c++类,如图。

然后选character,如图

名字随意,我打的是Schararter(路径有误),注意选公有。

创建编译好后,回到VS。可以看到他显示了我们刚才创建的类。(红线为visual Assist的bug醉)

我们先回到虚幻4界面,创建个人物蓝图,选择自己创建的角色类

然后起名为PlayerPawn;

将它拖到地板上面,并在属性栏里搜索possess,选择player 0;

这样子就可以不用GameStart组件,将它删掉。默认会从我们创建的角色视角开始。

 

之后切到VS2017在SCharacter.cpp文件下找到这位置打

 

因为网站字符大小所限,所以只能这样排版。

解释:

这是绑定按键的一个类函数BindAxis,主要是通过按键改变位置的变化和方向。

括号里的四个参数分别是

(“MoveForward”, this, &ASCharacter::MoveForward);

(绑定按键的名字,操作对象,按键时应发生的事件)

绑定按键的名字

这里我取得是“MoveForward”为前后行走的按键的名字,(注意名字不是乱取的)因为

你还要在UE4里设置绑定键.

操作对象

我们想要操作的角色就是我们创建的角色,所以用this。

按键时应发生的事件

MoveForward是我们自定义的函数,我们需要在头文件创建它。

在protect下打

 

//函数名不一定要跟我一样,但起码得看的懂和为以后的代码布局早想。

之后回到cpp文件在独立的区域打

 

 

 

解释:AddMovementInput()

该函数可以改变角色的位置,改变的位置为括号的数值。

括号里的参数为角色的x轴的位置,也就是前后位置。

GetActorForwardVector()是获取当前角色的位置。而里面的变量x就是我们按键改变的数值。

这样的的话就可以达到前后移动效果。

左右同理。

这样就实现了前后左右移动。

那鼠标呢?

我们已经弄好了。

 

因为虚幻4已经写好了鼠标控制

AddControllerPitchInput;
AddControllerYawInput;

我们只需要调用就好了。

设置好后回到虚幻4编译。

然后在左上角编辑->项目设置->按键这块输入相对应的按键名字。如图

注意名字一定要与代码的所答的名字对应,不然没有效果。

好了之后就可以移动了。

 

 

但目前只是个空壳,未免有点难看。我们先给他个躯体吧。

第二部分:创建第一人称角色

首先下载模型,我这里提供了一份简单的模型包给大家使用。但切勿商业用途,后果自负。

资源在本站资源页面里下载。

下载后。把模型放到我们创建的虚幻4游戏文件的Content文件夹里。

回到VS2017

我们先创建一个Mesh网格

你可以理解为模型所需要的容器。

在头文件里protect下打

 

不解释,详细看第一章。以后说过的不会提醒。

回到cpp文件里

在第一个函数里打

 

解释:

CreateDefaultSubobject 为创建组件尖括号里为组件类型,

TEXT里为组件名称。

setupattachment为绑定组件,即互相绑定的组件都要去那跟那,不能分开。

括号里为绑定的组件。

因为你不想看到你的眼睛(FPcamera)和手臂(FParm)分离吧。

bUsePawnControlRotation = true;

与许控制主角的转向。这样的话,摄像机就可以移动了。

输入好后,回到UE4编译。

完成之后

在新建的网格组件

添加我们下载好的模型

之后调一下摄像机的位置

就会看到

就大工告成了。

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像