内容自学自B站AV891927158,P1~3

(译自https://www.youtube.com/channel/UChc2VbgExQJ846GcuMf0MUw)

该文仅为自学记录,并非教程,可能存在谬误

系统环境:Win10, UE4(引擎版本4.27.1),LogicDriver插件

1. 实现材质变色 —— 使用直接的简单方法

首先创建一个蓝图类,继承自Actor,并添加简单的立方体cube和盒体碰撞

在蓝图 Construction Script 中创建新的变量,命名为 Material,变量刚创建完毕默认为布尔类型,我们需要点击变量名前的红色图标,将其修改为材质动态实例-对象引用类型

相关蓝图构造:

其中创建动态材实例中Source Material需要在视图中打开显示引擎内容来搜索选取

搜索关键词:

创建新函数,命名为SetColor

在右侧细节面板中新增输入,命名为Color,并将类型改为线性颜色

双击进入函数体,获取Material引用,并连接设置向量参数值,将ParameterName改为Color

在资产浏览器中右键新建蓝图 → State Machine,将其命名为CubeColorChanger

双击进入状态机,创建颜色循环

绿色状态相关蓝图如下:

绿 → 红分支逻辑如下,具体为判断在该状态下的时间,超过2s则实现对下一个状态的转换

红色状态以及红 → 绿转换逻辑完全一致,拷贝稍作修改即可


此处产生分支,方法一和方法二均可以达成最终目标,现逐一介绍:


方法一:

在Cube_BP蓝图中添加组件StateMacineComponent细节面板修改如下:

方法二:

在Cube_BP蓝图中新建变量,命名为StateMachine,在其细节面板中将变量类型更改为StateMachineInstance

进入事件图表,进行如下布置:


 分支结束,上述两种方法任选其一完成后,回到UE4编辑器


将蓝图实例拖拽到场景中,运行关卡,颜色每2S自动切换一次,功能得到实现

2. 实现材质变色 —— 使用盒体碰撞方法

创建布尔变量IsOverlaped

在Cube_BP中对事件图表进行如下设置:

在CubeColorChanger状态机中创建变量TotorialCharacter,将其变量类型更改为Cube_BP

在CubeColorChanger状态机事件图表中进行如下设置:

状态机绿 → 红的判定条件蓝图进行如下设置:

状态机红 → 绿的判定条件进行如下设置:


另一种,基于事件的方法,较上述方法更有效率


绿 → 红 蓝图:

红 → 绿蓝图:


另一种基于事件的方法,更快更简单


绿 → 红分支的细节面板进行如下更改:

绿 → 红转换条件蓝图:

红 → 绿转换细节面板:

红 → 绿转换条件蓝图:


上述三种方法任选其一,进入编辑器关卡


当角色与立方体重叠时,其颜色变红,当角色离开立方体时,其变绿

[UE4] LogicDriver状态机盒体颜色切换简单案例相关推荐

  1. Fragment滑动切换简单案例

    Fragment的产生与介绍Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神 ...

  2. java 向nodejs 发送请求简单案例

    java  向nodejs 发送请求简单案例 最近在做nodejs的东西,一直不明白java如何与nodejs建立连接,下面写了一个简单demo: nodejs端: var http = requir ...

  3. swiper的介绍以及使用(移动端滑动屏幕切换页面案例)

    一.swiper介绍 Swiper常用于移动端网站的内容触摸滑动  Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端.  Swiper能实现轮播图.触屏焦点图.触屏 ...

  4. vue下使用fullcalendar及简单案例

    ps:我真的感觉自己是个前端了,最近天天在写前端.不过很多复杂逻辑,后台处理起来比较麻烦,所以只让后台提供简单数据,前端封装处理数据确实比较方便! 引子:最近公司要做个人日程管理,故鄙人思前想后,选择 ...

  5. qml草地足球简单案例

    今天分享一个qml实现的草地背景,中间有足球,有文字的demo,简单案例,仔细阅读. 代码 import QtQuick 2.4 import QtQuick.Window 2.2 import Qt ...

  6. ViewPager 实现页面左右滑动的简单案例1

    ViewPager 实现页面左右滑动的简单案例 主要Activity: <RelativeLayoutxmlns:android="http://schemas.android.com ...

  7. BaseAdapter的一个简单案例

    BaseAdapter的一个简单案例 主Activity import android.os.Bundle; import android.app.Activity; import android.v ...

  8. Redis简单案例(二) 网站最近的访问用户

    原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...

  9. jQuery ajax简单案例-验证用户名是否可用

    jQuery ajax简单案例-验证用户名是否可用 HTML <!DOCTYPE html> <html> <head> <meta charset=&quo ...

最新文章

  1. GPT-3没有亲自上手,不如展望一下GPT-4?
  2. 如何在自定义指令中获取评估属性
  3. python-字符串·文件·集合操作
  4. ubuntu install baidu inputmethod
  5. count返回0_你是一直认为 count(1) 比 count(*) 效率高么?
  6. C#定义属性-静态属性
  7. php web表格导出,javascript将web表格导出成excel
  8. 拓端tecdat|二手闲置物品交易数据快照
  9. radio默认选中第一个_Mybatis学习之路【1】-- 第一个程序
  10. 编程基本功:正常运行的代码,你看明白能做什么?不如解决几个简单BUG
  11. 【语音加密】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
  12. 路由器与交换机的关系
  13. android amr 播放器,Android使用createInnerAudioContext无法播放amr?
  14. JS中alert的三种使用方式
  15. ps如何切html用的图片,前端实战(一)-----用ps把PSD切成HTML能用的图片
  16. 梯度下降——雏凤清于老凤声
  17. prometheus监控常用告警规则
  18. QT 软键盘实现
  19. 单片机I/O口的结构的详解
  20. 2020年最好的机器人学仿真工具软件汇总

热门文章

  1. 软件学习——定时器(3)
  2. 【编程语言】Scala下载及安装教程 CentOS 7
  3. cloud-utils
  4. 全球与中国线路型避雷器市场发展前景与投资战略规划分析报告2022~2028年
  5. 【设计欣赏】新颖包装设计欣赏
  6. FPGA中LUT初步学习
  7. 属牛人性格特点及脾气如何呢?
  8. Android工程师进阶第一课 夯实Java基础 JVM内存模型和GC回收机制
  9. 标识(志)符的概念与规则
  10. 开发了一款微信拜年小程序