码迷,mamicode.com
首页 > 其他好文 > 详细

UE 第三人称射击实例 #1

时间:2017-03-12 10:53:36      阅读:866      评论:0      收藏:0      [点我收藏+]

标签:记录   控制   date   而且   title   做什么   blank   map   ace   

这个文章是给自己看的,因此步骤不会很详细,只记录项目大致流程。

学习了UE4差不多三个月了,官网里面的实例教程看了一多半,无论是跑酷的,捡电池的,multiplayer的,twin stick shooter 等都跟着坐了一遍,觉得是时候自己做一点东西试试了,毕竟看视屏一步一步跟着做和自己从零开始做肯定不一样,视频里看起来理所当然的事自己做起来如果不理解就会出问题。

想来想去还是先做一个第三人称射击类游戏,感觉上这类游戏会简单一些因为主体就是开枪射击嘛,比较好做,(做着做着就发现连想起来好做的都并不好做啊)。场景就设定为太空船里面了,毕竟科技感强的东西总是酷一些。然后项目是用蓝图做的,官方的蓝图教程比较多所以蓝图比较熟悉,感觉有些东西目前蓝图会做C++却不会做,等做完这个项目我大概试着用C++再做一遍。

既然想好要做什么了,第一步就是准备素材,UE4 launcher商店里面的东西真心贵,完全负担不起,不过还好中国人是很机智的,在虚幻中国论坛里面有很多官方商店里面的素材,都是别人买了拿来分享的,只需要一些积分就可以下载,非常方便,我在里面下载了一些素材包括场景,声音等备用。 人物的话没有找到科技感强的人物模型,想来想去暂时先用官方自带的机器人好了,看起来至少科技感还是有的,等以后找到合适的模型可以直接替换,对了引擎版本4.14。

人物的animation我用了官方商店的免费包,叫"aniamtion starter pack",以及第三人称模板自带的动画。

下面进入第一篇文章的主要内容,这篇文章主要讲的是project setup 以及 为character 绑定aniamtion。

首先新建一个第三人称蓝图项目,包含start content 包,万一用上里面的东西呢,游戏名我就叫INVADE了:

技术分享

然后把content browser里面无关的东西都删掉,比如第三人称自带的地图还有一些几何体什么的,多余的文件看着好碍眼啊,然后新建Map和Blueprint文件夹,这个总是要建的。在Blueprint文件夹里面新建一个GameMode蓝图叫InvadeGameMode,以及一个继承MyCharacter(第三人称自带character蓝图)的蓝图,就叫HeroCaracter。进入InvadeGameMode

把默认Pawn改为HeroCaracter。

之后新建一个Map,用default的那个带一个地板和天空的,保存一下取名为MainMap. 然后进入Edit-》project settings -》Maps&Modes里面把游戏启动地图和编辑器启动地图都改为Main Map。DefaultGameMode 改为InvadeGameMode。然后进入input标签,设置一下这篇文章会用到的输入:

技术分享技术分享

这个游戏目前就用键盘控制,于是我把其他的输入方式都给删了,等会再character蓝图里面也可以把无关的节点删除。 

下一步是把动画结合到一个skeleton里,starter pack里面的动画都是持枪的,第三人称模板里面的动画是不持枪的,它们用的skeleton虽然本质上是相同的都是UE4标准skeleton,但是动画适合各自文件夹内的skeleton绑定的,为了把所有动画都绑定到一个skeleton上,需要在两个文件夹内的 “UE4_Mannequin_Skeleton” 都双击进入编辑界面,选择上方的retarget manager,然后set up rig里选择humanoid rig,保存。

技术分享

然后选中第三人称模板里面的所有动画(Animation sequence),右键-》retarget anim assets-》duplicate anim assets and retarget,之后选中左边的UE4_Mannequin_Skeleton后点击retarget,这时左右的第三人称模板里的动画会被复制到content目录下,而且这些动画可以被Animation Starter pack里面的skeleton使用。

下一步是创建动画的blendSpace,我们需要三个在content brower里右键->animation->blend Space 1D一次,右键->animation->blend Space 两次,分别叫NotCombat_Idle_Run,Crouchwalk 以及 Rifle_Idle Run。然后编辑这三个文件,结果如下只给出参数以及使用的animation sequence,至于动画点是怎么放置的知道原理的话都可以放:

技术分享技术分享技术分享

 

之后为角色创建一个animation blue print,就叫HeroAnimBP,然后在角色蓝图里面Mesh把使用的动画改成刚刚创建的这个。

下一步编辑角色蓝图:

创建要用到的

技术分享

设置蹲和跳,注意蹲的时候是不能跳的

技术分享

设置是否是战斗状态,这里需要注意,非战斗状态是的视角是普通第三人称视角,wasd控制人物移动,而且人物的朝向是会随wasd改变的,在战斗状态中类似于第一人称,wasd控制移动是人物永远是超前看的,这个需要设置movement component里面的舒心。这里调用了Animation 蓝图里实现的接口方法,animation BP的 event blueprint update animation是每帧都调用,使用接口可以不再那个方法里面获取IsCombat变量,而是在这个变量改变的时候发送一个消息给animation BP来设置这个变量.Enable~和Disable~都是接口里的方法,Mesh使用的animation BP则实现了这个接口。

技术分享

 用滚轮调整相机里角色的距离。

 技术分享

更改相机的pitch值范围

技术分享

 

下面设置HeroAnimBP:

声明变脸和函数:

技术分享

实现接口:

技术分享

每一帧获取变量的值:

技术分享

其他方法都很简单,get SpeedAndDirectin方法因为会很常用,所以贴出来:

技术分享

之后进入Anim graph,新建一个State叫HeroState,连到Final Animation Pose,进入hero state 创建如下状态机:

技术分享 

这样一来,人物就可以执行普通站立,普通跑动,普通跳跃,下蹲,下蹲移动,持枪站立,持枪跑动,持枪跳跃这几种不同的动作了。 这篇文章就到这里。

 

UE 第三人称射击实例 #1

标签:记录   控制   date   而且   title   做什么   blank   map   ace   

原文地址:http://www.cnblogs.com/yang-xiong/p/6536996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!