[UE4] LogicDriver状态机盒体颜色切换简单案例
内容自学自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状态机盒体颜色切换简单案例相关推荐
- Fragment滑动切换简单案例
Fragment的产生与介绍Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神 ...
- java 向nodejs 发送请求简单案例
java 向nodejs 发送请求简单案例 最近在做nodejs的东西,一直不明白java如何与nodejs建立连接,下面写了一个简单demo: nodejs端: var http = requir ...
- swiper的介绍以及使用(移动端滑动屏幕切换页面案例)
一.swiper介绍 Swiper常用于移动端网站的内容触摸滑动 Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现轮播图.触屏焦点图.触屏 ...
- vue下使用fullcalendar及简单案例
ps:我真的感觉自己是个前端了,最近天天在写前端.不过很多复杂逻辑,后台处理起来比较麻烦,所以只让后台提供简单数据,前端封装处理数据确实比较方便! 引子:最近公司要做个人日程管理,故鄙人思前想后,选择 ...
- qml草地足球简单案例
今天分享一个qml实现的草地背景,中间有足球,有文字的demo,简单案例,仔细阅读. 代码 import QtQuick 2.4 import QtQuick.Window 2.2 import Qt ...
- ViewPager 实现页面左右滑动的简单案例1
ViewPager 实现页面左右滑动的简单案例 主要Activity: <RelativeLayoutxmlns:android="http://schemas.android.com ...
- BaseAdapter的一个简单案例
BaseAdapter的一个简单案例 主Activity import android.os.Bundle; import android.app.Activity; import android.v ...
- Redis简单案例(二) 网站最近的访问用户
原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...
- jQuery ajax简单案例-验证用户名是否可用
jQuery ajax简单案例-验证用户名是否可用 HTML <!DOCTYPE html> <html> <head> <meta charset=&quo ...
最新文章
- GPT-3没有亲自上手,不如展望一下GPT-4?
- 如何在自定义指令中获取评估属性
- python-字符串·文件·集合操作
- ubuntu install baidu inputmethod
- count返回0_你是一直认为 count(1) 比 count(*) 效率高么?
- C#定义属性-静态属性
- php web表格导出,javascript将web表格导出成excel
- 拓端tecdat|二手闲置物品交易数据快照
- radio默认选中第一个_Mybatis学习之路【1】-- 第一个程序
- 编程基本功:正常运行的代码,你看明白能做什么?不如解决几个简单BUG
- 【语音加密】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
- 路由器与交换机的关系
- android amr 播放器,Android使用createInnerAudioContext无法播放amr?
- JS中alert的三种使用方式
- ps如何切html用的图片,前端实战(一)-----用ps把PSD切成HTML能用的图片
- 梯度下降——雏凤清于老凤声
- prometheus监控常用告警规则
- QT 软键盘实现
- 单片机I/O口的结构的详解
- 2020年最好的机器人学仿真工具软件汇总