斯坦福课程 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. 基于三菱Q系列cc-Link的卧式自动燃煤蒸汽锅炉控制系统

    系统说明: 方案选用: 本系统最终采用三菱Q系列+FX3U系列方案 工艺流程: 触摸屏设计: 程序设计: 本文章为原创作品,未经允许,请勿转载,否则将会追究法律责任.

  2. [ABC205F] Grid and Tokens 题解

    Grid and Tokens 题目大意 给定 \(n\) 个点和一个 \(H\times W\) 的网格,每个点可以放置在 \((A_i,B_i)\) 到 \((C_i,D_i)\) 的矩形中或不放 ...

  3. 网络基础-OSI七层vsTCP/UDP四层 五层 数据封装

    1.0 网络基础 1.1 网络是什么? 网络是信息传输.接收.共享的虚拟平台,通过它把各个点.面.体的信息联系到一起,从而实现这些资源的共享 网络分类:局域网 ,城域网,广域网 1.2 数据通信方式 ...

  4. 错误记录-FileStream访问被拒绝

    简介: 问题:因项目需要,软件需要读取授权文件中的密文与本机验证码做一定的逻辑比对,使用FileStream实现文件的读取,在本机调试没问题,但在其他同事电脑上有一些出现授权一直不通过的情况. --M ...

  5. springboot整合shiro框架学习

    springboot整合shiro框架做用户认证与授权 springboot整合shiro框架的流程主要分为: 导入shiro依赖 <dependency> <groupId> ...

  6. Unity - UIWidgets 1. 从Hello world开始

    安装参照github的README.UIWidgets相当于Flutter的一个Unity实现(后面表示UIWidgets和UGUI区别时直接称"Flutter"),是把承载的所有 ...

  7. 优雅设计之美:实现Vue应用程序的时尚布局

    前言 页面布局是减少代码重复和创建可维护且具有专业外观的应用程序的基本模式.如果使用的是Nuxt,则可以提供开箱即用的优雅解决方案.然而,令人遗憾的是,在Vue中,这些问题并未得到官方文档的解决. 经 ...

  8. simple-check-100

    代码脚本解开法 #include <stdio.h> int main(int argc, char* argv[]) { char flag_data[] = { 220, 23, 19 ...

  9. Python数字加密方法:建立从0到9的数字序列,将输入的数字数据,每个数字在数字序列中循环右移2位,输出该数据对应的汉字大写形式。

    数字加密方法:建立从0到9的数字序列,将输入的数字数据,每个数字在数字序列中循环右移2位,输出该数据对应的汉字大写形式. 样例1:输入123,输出三四五 样例2:输入985,输出一零七 def Slo ...

  10. 线性代数导论MIT第一章中的知识点

    线性代数知识点: 0.矩阵表 1.线性组合 2.向量与线性组合 3.线性组合 4.三维向量 平面向量(x, y)与3维空间的(x, y, 0)不相同! 二维空间的向量v具有两个分量v1与v2. v + ...