斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论

概述

本篇文章将会展示Gameplay另一个用法,也就是我们最常见的使用特定道具交互特定的机关。例如本文要实现的,获得不同的钥匙卡,然后根据钥匙卡打开不同的箱子。

目录

  1. 创建拉杆
  2. 创建标签
  3. 修改宝箱

创建拉杆

首先快速创建一个拉杆,其中使用到的静态网格体都可以从ExampleContent/Meshes中找到。

其中,HandleMesh的默认旋转值为Y=30°,之后拉下拉杆,我们会将其设置为Y=-30°。

创建Actor蓝图

由于此拉杆要和我们角色进行交互,这里需要继承以前实现的GameInterface接口,该接口允许带有SurInteractionComponent组件的角色对其交互,并执行接口中定义的Interact函数。具体的可以参考这篇文章:https://www.bilibili.com/read/cv18878087,或者查看课程第四章第10节。

添加接口

对Interact函数进行重载。这里仅仅定义了拉杆最基本的功能,之后还会有其他补充:

重载函数

一次性拉杆

创建标签

接着创建钥匙卡相关标签。在项目设置->GameplayTags中创建KeyCard.Blue和KeyCard.Yellow(蓝色钥匙卡和黄色钥匙卡)

新建标签

接着为刚才创建的拉杆创建一个变量KeyCard,表示这个拉杆对应的钥匙卡是哪个。

这里可以为其设置默认值,也可以勾选可编辑实例,让这个属性暴露的UE编辑器中,这样我们就可以在蓝图外修改它对应的Tag了。

新建Tag变量

为刚才重载的Interact添加赋予标签的功能,当角色与拉杆交互时,拉杆会获取角色的ActionComponent,并将自己的钥匙卡标签赋予给角色。

修改蓝图

修改宝箱

与拉杆对应的,我们也要修改宝箱的逻辑,能让其对钥匙卡作出反应。宝箱相关的内容,还是可以参考这篇文章:https://www.bilibili.com/read/cv18878087,或者查看课程第四章。

为宝箱添加一个Tag类型的变量,表示该宝箱需要的钥匙卡类型。同样的,勾选可编辑实例将其暴露在编辑器中。

创建RequireKeyCard变量

在原来打开宝箱的逻辑前面添加上检查钥匙卡的蓝图节点。在每次试图与宝箱交互时,都会检查交互者身上的标签,如果拥有Require Key Card标签,那么就可以打开宝箱。

添加检查标签的蓝图节点

将拉杆拖到场景中,我们可以直接在右侧的细节面板调整拉杆对应的钥匙卡Tag

修改拉杆对应的钥匙卡标签

同样的,我们可以在右侧的细节面板调整宝箱所需要的钥匙卡Tag。

修改宝箱所需要的钥匙卡Tag

进入游戏,查看最终结果。

可以从左上角的Debug信息看到,一开始角色没有钥匙卡标签,试图打开箱子的时候(图里会出现绿色的线)是没有任何反应的,

与拉杆进行交互后,角色获得了钥匙卡标签,此时就可以与宝箱进行交互了。

最后还有一个细节,我们在使用蓝图节点HasTag(拥有标签)时,注意到下面有一个Exact Match。就如描述所说的,如果勾选上的话,在判断是否拥有标签时,会要求进行比较的标签之间是完全相同的。这里完全相同的意思是要求其父标签和子标签是完全一样的。

反之,如果不勾选的话,将会进行一定程度的模糊搜索。如下图所示:

箱子的Require Key Card像如图设置。如果不勾选上的话,只要求父标签为KeyCard,这样的话只要父标签是KeyCard,不管拿到什么颜色都能打开箱子。

反之,如果勾选上的话,如果你拿的KeyCard带有子标签,那么就意味着这些KeyCard都打不开箱子,毕竟此时的箱子,只认KeyCard单独一个父标签。

斯坦福 UE4 C++ ActionRoguelike游戏实例教程 13.使用GameplayTag实现使用钥匙卡打开箱子的更多相关文章

  1. Cocos2d-x3.0游戏实例《不要救我》第十篇(结束)——使用Json配置数据类型的怪物

    如今我们有2种类型的怪物,并且创建的时候是写死在代码里的,这是要作死的节奏~ 所以.必须可配置.不然会累死人的. ; i < size; ++i) { int id = root[i][&quo ...

  2. Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/musicvs/article/details/25368273 好吧.我真心全然搞不懂.我如今仅仅只 ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇:简介及目录》(附上完整工程文件)

    G-3D引擎2D射击类游戏制作教程 游戏类型: 打飞机游戏属于射击类游戏中的一种,可以划分为卷轴射击类游戏. 视觉表现类型为:2D 框架简介: Genesis-3D引擎不仅为开发者提供一个3D游戏制作 ...

  4. 值得 Web 开发人员收藏的20个 HTML5 实例教程

    当开始学习如何创建 Web 应用程序或网站的时候,最流行的建议之一就是阅读教程,并付诸实践.也有大量的 Web 开发的书,但光有理论没有实际行动是无用的.现在由于网络的发展,我们有很多的工具可以用于创 ...

  5. 3Ds Max实例教程-制作女战士全过程

    3Ds Max制作“女战神” 作者:Diego Rodríguez 使用软件:3Ds Max,Photoshop 3Ds Max下载:http://wm.makeding.com/iclk/?zone ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 值得 Web 开发人员学习的20个 jQuery 实例教程

    这篇文章挑选了20个优秀的 jQuery 实例教程,这些 jQuery 教程将帮助你把你的网站提升到一个更高的水平.其中,既有网站中常用功能的的解决方案,也有极具吸引力的亮点功能的实现方法,相信通过对 ...

  8. Web 开发中应用 HTML5 技术的10个实例教程

    HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...

  9. python迭代器与iter()函数实例教程

    python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...

  10. 《HTML5与CSS3实例教程》

    <HTML5与CSS3实例教程> 基本信息 作者: (美)Brian P. Hogan 译者: 卢俊祥 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:97871153634 ...

随机推荐

  1. 02-Shell变量

    1.Shell变量 1.1 Shell变量的介绍 变量用于存储管理临时的数据, 这些数据都是在运行内存中的. 1.2 变量类型 系统环境变量 自定义变量 特殊符号变量 2.系统环境变量 2.1 介绍 ...

  2. Jmeter-变量的嵌套使用

    场景: 有存在获取到多个登录账号,循环获取单个变量的情况. 常用方法: ${__BeanShell(vars.get("变量字段_${变量字段}"))} 取值示例: 思维扩展: 一 ...

  3. ABC319 A-E 题解

    A 用 map <string, int> 将名字对应的值存下来即可. 赛时代码 B 按照题意暴力模拟,注意细节. 赛时代码 C 答辩题,卡了我半个小时. 枚举 \(1\sim 9\) 的 ...

  4. 使用 Ant Design Vue 你可能会遇到的14个问题

    公司有一个新需求,在原来项目基础上开发,项目中使用 Ant Design Vue,版本是 1.X ,在此记录下遇到的问题:对于没有使用过或者使用程度不深的同学来说,希望可以帮助你在开发中遇到问题时有个 ...

  5. 推理(Inference)与预测(Prediction)

    在机器学习的背景下,很多人似乎混淆了这两个术语.这篇文章将试图澄清我们所说的这两个词是什么意思,每一个词在哪里有用,以及它们是如何应用的.在这里,我将举几个例子来直观地理解两者之间的区别. 推理和预测 ...

  6. Go 方法集合与选择receiver类型

    Go 方法集合与选择receiver类型 目录 Go 方法集合与选择receiver类型 一.receiver 参数类型对 Go 方法的影响 二.选择 receiver 参数类型原则 2.1 选择 r ...

  7. 一篇文章带你掌握测试基础语言——Python

    一篇文章带你掌握测试基础语言--Python 本篇文章针对将Python作为第二语言的用户观看(已有Java或C基础的用户) 因为之前学习过Java语言,所以本篇文章主要针对Python的特征和一些基 ...

  8. python之猜数字小游戏

    import random#随机数函数 a = random.randint(0, 50)#随机0-50之内的整数 print('------------------SWS工作室----------- ...

  9. Java程序员必备技能:Collections工具类深度解析!

    在之前的文章中,我们学习了单列集合的两大接口及其常用的实现类:在这些接口或实现类中,为我们提供了不少的实用的方法. 本篇文章我们来介绍一种java开发者为我们提供了一个工具类,让我们更好的来使用集合 ...

  10. 【Javaweb】JavaEE项目的三层架构 | 快速搭建

    逻辑类图 分层的目的是为了解耦.解耦就是为了降低代码的耦合度.方便项目后期的维护和升级. 不同的层有不同的包 web层 com.stguigu.web/servlet/controller servi ...