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

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. 12.1、Libgdx的图像之持续性和非持续性渲染

    (官网:www.libgdx.cn) Libgdx在默认情况下,渲染现成调用render()方法进行持续性渲染.频率取决于你的硬件设备. 有时候有些游戏中并不需要持续性的渲染,为了省电,可以关掉持续性 ...

  2. memcached 详解

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  3. BLOCK/字面量(语法糖)OC——第六天

    1.//block ,块语法,实质是匿名函数,是对C语言中函数的扩充,扩展: //block  语法可以用来保存一段代码或者用来调用一段封装好的代码: //block  语法由于是C语言实现的,所以执 ...

  4. 10、Libgdx的内存管理

    (官网:www.libgdx.cn) 游戏是非常耗资源的应用.图片和音效可能耗费大量的内存,另一方面来说,这些资源没有被Java垃圾回收,让一个垃圾处理来决定将显存中的5M的图片进行释放也不是一个明知 ...

  5. Css详解之(伪类选择器)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. mysql进阶(四)mysql中select

    mysql中select * for update 注:  FOR UPDATE 仅适用于InnoDB,且必须在事务区块(BEGIN/COMMIT)中才能生效. 作用 锁定该语句所选择到的对象.防止在 ...

  7. 集群通信组件tribes之集群的平行通信

    前面的集群成员维护服务为我们提供了集群内所有成员的地址端口等信息,可以通过MembershipService可以轻易从节点本地的成员列表获取集群所有的成员信息,有了这些成员信息后就可以使用可靠的TCP ...

  8. 用Zmq实现网关与游戏服全互连

    用Zmq实现网关与游戏服全互连(金庆的专栏)Zeromq无需bind, connect次序,可以在对方bind之前就connect, 可实现服务器以任意顺序启动.Zmq有自动重连功能,可实现服务器故障 ...

  9. Java之美[从菜鸟到高手演变]之设计模式四

    在阅读过程中有任何问题,请及时联系:egg. 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 转载请说明出处:http://blog.csdn.net ...

  10. Linux grep命令分析以及C语言版本的实现

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...