在游戏中经常会出现第一人称和第三人称的视角切换场景,笔者在这里简单介绍如何进行这步操作。

1.创建角色

在内容浏览器中添加2个Character蓝图,分别命名为FirstPersonalCharacter和ThirdPersonalCharacter

双击打开FirstPersonalCharacter蓝图编辑器,在组件窗口添加摄像机Camera组件,并调整到合适的位置,并勾选CameraSettings中的Use Pawn Control Rotation选项。

在事件图表中添加移动逻辑(这里不多解释其原理及运行机制)

在ThirdPersonalCharacter蓝图中进行相同设置,不过还需要几步额外的操作。在组件窗口添加SpringArm,将Camera拖放入其子项,之后调整摄像机位置。

在Mesh组件的Animation中将类设置为第三人称蓝图

将Mesh的骨骼设为SK_Mannequin(这是虚幻商城中一款免费的人物骨骼,下载后添加到指定工程即可),之后调整人物朝向和人物在胶囊体中的位置,如果读者有其他人物骨骼和动画,则可以随个人喜好设置

接下来是很重要的一步,在移动组件中搜索rotation,勾选Orient Rotation to Movement,在第三人称自身组件中搜索rotation,取消勾选Use Controller Rotation Yaw,在SpringArm组建中搜索rotation,勾选Use Pawn Control Rotation。

在这三步设置完成后,人物就可以正常转向了。

2.切换人称逻辑

打开关卡蓝图创建Event BeginPlay事件,在游戏开始时获取第三人称角色并保存,然后向场景中投放(创建)一个第一人称Character(如果在游戏模式中的设置默认游戏角色是第一人称,则创建一个第三人称角色,不过由于第一人称没有骨骼模型,是透明的,提前投放在关卡场景中不会显得异常),位置尽量避免碰撞(虽然没有骨骼模型,但胶囊体碰撞还是存在),将输出保存。

添加C键驱动事件,作为第三人称切换到第一人称的按键

先获取第三人称角色的位置并保存,在切换视角后调整第一人称角色的位置。同时添加了判断逻辑,避免在第一人称视角时触发事件(Is3P的初始值设为True,因为关卡运行时默认为第三人称角色视角)。

添加B键驱动事件,作为第一人称切换回第三人称的按键

由于第三人称角色的位置在场景中已经存在,所以不用再进行调整,而是将第一人称角色位置改回切换前的状态,保证场景中不会出现一个透明碰撞块。同样也添加了判断逻辑,避免重复触发事件。

运行关卡,C键,B键功能运行无误,切换功能正常。

UE4中创建第一、第三人称角色,并进行角色间的切换的更多相关文章

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

    接着上节我们继续学习,现在我们来创建一些NPC(non-playable characters,非玩家角色).在这个游戏中,当我们靠近NPC时,它们会做出相应的反应. 一 创建C++类 1) 在UE编 ...

  2. 如何将MagicaVoxel模型导入UE4中(2)

    前言 当可以把MagicaVoxel的静态模型导入到UE4后,我又开始不满足了.默认第三人称蓝图的"汽车碰撞人偶(雾)"与场景中的体素画风格格不入,于是,我便想着用自己建造的体素画 ...

  3. [UE4]使用Is Locally Controlled解决第一人称和第三人称武器位置问题

    一.在第一人称网络游戏中,自己看到的是第一人称,其他玩家看到的自己是第三人称. 二.由于第一人称和第三人称是不同的模型,所以枪在模型上面的插槽位置也会不一样. 三.在武器挂载在人物模型的使用,使用“I ...

  4. UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类

    转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...

  5. Unity3D中的第三人称镜头的脚本控制

    原地址:http://blog.csdn.net/mobanchengshuang/article/details/27591271 好久没有敲Blog了,谢谢大家的留言.关注.私信等支持,但是我好像 ...

  6. 【Unity】第11章 第三人称角色控制器和碰撞体

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 第三人称视角控制器涉及的相关概念有: 1.刚体(Rigidbody). 2.碰撞体(Collider).包括球体碰撞体( ...

  7. 转 在SQL Server中创建用户角色及授权(使用SQL语句)

     目录 要想成功访问 SQL Server 数据库中的数据 我们需要两个方面的授权 完整的代码示例 使用存储过程来完成用户创建 实例 要想成功访问 SQL Server 数据库中的数据, 我们需要两个 ...

  8. 在SQL Server中创建用户角色及授权

    参考文献 http://database.51cto.com/art/201009/224075.htm 正文 要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权: 获得准许 ...

  9. 【转】在SQL Server中创建用户角色及授权(使用SQL语句)

    1. 首先在 SQL Server 服务器级别,创建登陆帐户(create login) --创建登陆帐户(create login) create login dba with password=' ...

随机推荐

  1. gitlab6 配置的几个问题说明

    gitlab6 配置的几个问题说明 按照gitlab的网站的详细步骤,终于把gitlab 6.1 stable安装到2台虚拟机上了.由于gitlab6运行于虚拟机上,所以配置这个虚拟机的hostnam ...

  2. JAVA DOM4j解析XML数据到自定义javabean

    我们获取xml中的数据,一般以面向对象的思想去处理这些数据.因此,我们需要自定义类来封装解析出来的数据,以方便我们操作这些数据. 自定义的java类,称为javabean. 自定义Contact类代码 ...

  3. XML引入以及与html的区别

    1.1 引入 HTML: 负责网页的结构 CSS: 负责网页的样式(美观) Javascript: 负责在浏览器端与用户进行交互. 负责静态的网页制作的语言 HTML语言特点: 1)由标签组成. &l ...

  4. git中failed to push some refs to git问题解决及基本使用

    国庆归来准备试用一下git,在提交代码时遇到时遇到一些问题 提交时使用git push origin master 出现failed to push some refs to git 回想一下,创建该 ...

  5. 怎样使用projectproperty sheet(.vsprops)来管理工程

    怎样使用projectproperty sheet(.vsprops)来管理工程 IDE:VS2005 前言 Project Property Sheet的意思是项目属性表,在大型项目中基本上都会使用 ...

  6. Java-ServletRequestWrapper

    /** * * Provides a convenient implementation of the ServletRequest interface that * can be subclasse ...

  7. 用C语言绘制一条标准的余弦曲线

    #include<stdio.h> #include<math.h> int main() { double y; int x,m; for(y=1;y>=-1;y-=0 ...

  8. 【LaTeX排版】LaTeX论文排版<四>

    1.表格的插入     一般的表格插入的代码如下: \begin{table}[H] \centering \begin{tabular}{|c|c|c|} \hline 感知方法&优点&am ...

  9. mac os x下的一些小技巧

    1显示swap空间: sysctl vm.swapusage 其中sysctl中有很多可以控制和查看的项,可以通过sysctl -A列举,另外可以通过man sysctl来查看. 而实际swap文件和 ...

  10. ubuntu14.04下安装rubinius测试原生线程

    因为CRuby(MRI)本身不支持原生多线程,所以想试一下其他ruby解释器实现对原生多线程的支持.于是安装rubinius折腾一下:) 在rubinius官网下载2.4.1源代码,然后驾轻就熟首先b ...