09虚幻4【UE4】中模型沿着轨道运动

2023-11-01

思路:简单化,比如让一个物体沿着一条直线运动,比如双开移动门,是不是控制两个门分别往左边和右边移动,也就是通过addTime进行设置,每一帧改变Location就可以了。

转化思路:轨道是不规则的样条曲线,不仅仅通过addTime的每一帧改变物体的Localtion还要改变物体的旋转Rotation,也就是每一帧的位置和旋转都是样条曲线的,也就是我们需要传入一个样条曲线的实例,所以定义一个变量,为此蓝图样条曲线的类型,把变量暴露出去,在场景中选中运动的物体,找到该物体的细节面板,选择对应的样条曲线实例赋值给变量,这样我们就能拿到样条曲线,通过样条曲线相关函数通过【Get Location at Distance Along Spline】和【Get Rotation at Distance Along Spline】获取该样条曲线当前点的位置和旋转

  • 创建Track蓝图类(轨道)并添加一个Spline样条曲线
  • 创建TrackCar(移动车)蓝图类并添加一个Mesh(车,方块都可以)
  • 编写TrackCar的蓝图逻辑
  • 将TrackCar扔到场景中并在细节面板中拾取对应轨道实例

一、创建Track蓝图类(轨道)并添加一个Spline样条曲线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNl69oat-1630219570431)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828111020925.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdIrpq86-1630219570433)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828111100732.png)]
目前我们只是加一个样条曲线,对样条曲线不做任何修改,如果想要改成火车轨道的话,需要添加轨道模型和蓝图逻辑,这里我们先不复杂话,先让一个mesh沿着曲线运动

二、创建TrackCar(移动车)蓝图类并添加一个Mesh(车,方块都可以)

我这里随便添加了一个静态网格体(mesh),如果有其他模型,比如小火车之类的可以加进去
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQPHMmqM-1630219570435)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828111254508.png)]

三、编写TrackCar的蓝图逻辑

3.1、设置自定义事件MoveCar

把轨道运动自定义一个事件,增加一个变量为ActiveCar为Boolean类型,然后暴露出去,判断是否将其在轨道上运动,方便后续我们扩展
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPdqT6vm-1630219570436)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828114746089.png)]

3.2、添加时间轴(循环)通过每一帧设置TrackCar的位置

通过addTime添加时间轴命名为CarMover来对每一帧得模型改变其位置和旋转角度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rKl9hLwR-1630219570437)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828143326037.png)]
选中loop才能实现循环运动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Liis3ezQ-1630219570438)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828134413537.png)]
新增一个变量为TrackRef变量类型为Track类型,因为我们在场景中要关联指定的轨道,来获取该轨道的各种信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7dG2lOB-1630219570439)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828134817813.png)]

解释lerp函数,A-B(任意数组),不管是什么都看作为0-1的过程,Alpha表示当前百分比(输入的值0-1之间的树),Return Value返回当前时间的A-B的实际值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmCbwHSA-1630219570440)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828135724719.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AAQS0FEp-1630219570442)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828134643491.png)]

通过刚才的变量Tarcak Ref获取到里边的Spline,通过函数【Get Spline Length】获取轨道长度,所以我们这个时候给Lerp的值A为0表示起点,B的值为轨道长度作为终点。时间轴从0-1秒的每一帧的小数作为比例,也就是我们可以拿到每一帧轨道点的距离。

获取距离干什么?通过spline的相关函数传入【轨道对象】和【轨道距离】就能通过【Get Location at Distance Along Spline】获取轨道上当前帧的位置,通过【Get Rotation at Distance Along Spline】获取轨道当前帧的视角

所以我们获取距离distance就是这个用途
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhUEx7AH-1630219570443)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828141845095.png)]

3.3、设置模型运动完轨道的时间

设置时间速率,来控制运动的速度,刚开始我的想法是直接控制时间长度不就可以了吗?但是我们的Lerp中的Alpha是输入0-1的值,而且时间不好更改,想要更灵活通过设置一个变量我们就能对于不同的轨道设置不同的速度,想到就很爽。

增加一个变量Duration为浮点型,作为运动完这条轨道的时间,我们再增加一个变量KartStartOffset浮点型作为我们开始的时间,比如两个火车运动,我错开时间是不是就可以实现两火车错峰出行(将这两个变量暴露出去)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GO5iNsdW-1630219570444)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828142343793.png)]
通过函数Set Play Rate(记得是时间轴类型,因为有好多种类型,对应的对象不一样)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RssNY6Tx-1630219570444)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828142549399.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V89NZhoN-1630219570445)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828142432580.png)]
传入CarMover时间轴对象,时间就是0-1要是想要改变长度就是改变速率,放速率利用除法1/时间,然后设置事件连接上即可

创建一个轨道实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m2QHnSo3-1630219570445)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828143111978.png)]

创建一个Car实例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LC8zQoAM-1630219570445)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828143143254.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDe71Xmw-1630219570446)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828143256687.png)]
然后运行程序就可以运动了,这里我就不放动图了

【扩展】

当然轨道现在只是一条去曲线,但是如果更改蓝图逻辑让其附带上mesh那么我门就可以实现一个真实的轨道,我下边有个例子不过不是轨道而是模仿的管道的流向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgXmXtrm-1630219570446)(01_Mesh%E6%B2%BF%E7%9D%80%E8%BD%A8%E9%81%93%E8%BF%90%E5%8A%A8.assets/image-20210828142802077.png)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

09虚幻4【UE4】中模型沿着轨道运动 的相关文章

  • [转]Unity Accelerator本地服务器加速Unity项目资源载入速度

    去年的时候项目引擎版本由2019升级为2020 对应的资源导入管线也由V1切换到了V2 在这个过程中发现原来的cachesever就不满足项目需要了 查阅了一些资料发现unity的cachesever升级成了Unity Accelerato
  • unity实现简单的地图编辑器,实现跑酷地图编辑器 2d地图编辑器,导出地图json数据,导入地图json数据

    这里使用的是unity2020 1 对于unity编辑器开发也不是很了解 这方面的教程也不多 也是慢慢摸索的 效果显示 首先简单 介绍下Unity编辑器开发 1 Editor下打开新窗口需要继承EditorWindow 然后使用获取窗口即可
  • Unity基础知识及一些基本API的使用

    Unity基础知识及一些基本API的使用 1 Unity界面介绍 Unity的默认Editor窗口主要呈现为以上布局 它们分别为 1 工具栏 工具栏提供最基本的工作功能 左侧的按钮用于访问 Unity Collaborate Unity 云
  • 在Unity中进行单例的动态脚本加载

    首先调用Unity提供的注释可以在点下Play之后 在游戏真正启动前去执行一些脚本 要注意执行脚本要放在Assets Editor下 RuntimeInitializeOnLoadMethod RuntimeInitializeLoadTy
  • unity-ugui-eventsystem

    EventSystem对象的说明 当我们在场景中创建任一UI对象后 Hierarchy面板中都可以看到系统自动创建了对象EventSystem 可以看到该对象下有三个组件 EventSystem StandaloneInputModule
  • 2022-05-14 Unity核心7——2D动画

    文章目录 一 序列帧动画 二 骨骼动画 2D Animation 三 反向动力学 IK 四 换装 五 骨骼动画 Spine 一 序列帧动画 一 什么是序列帧动画 我们最常见的序列帧动画就是我们看的日本动画片 以固定时间间隔按序列切换图片 就
  • Unity+Pico 手柄按键控制

    一 定义手柄按键API 1 InputDevices GetDeviceAtXRNode 通过XRNode获取对应的设备 2 XRNode是一个枚举类型 包含LeftEye RightEye CenterEye Head LeftHand
  • unity木船模型,古代帆船模型,古船

    unity木船模型 模型如下图所示 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 64876331
  • 用虚幻4开发搭积木的VR游戏

    2016 年 9 月 23 24 日 由 CSDN 和创新工场联合主办的 MDCC 2016 移动开发者大会 中国 Mobile Developer Conference China 将在北京 国家会议中心召开 来自iOS Android
  • Unity --- Vector3类的API讲解

    1 Vector3中的静态变量是相对于世界坐标系的还是相对于自身坐标系呢 我们创建的Vector3类对象同理 答 这取决我们将创建的Vector3类对象 通过Vector3调用的静态变量传给了哪一个引用 如果是传给了positon的话 则该
  • Unity 音频卡顿 静帧 等待等问题的解决方案

    是否遇到过在Unity中加载音频文件卡顿 也就是画面卡住 的现象 特别是加载外部音频文件时 虽然时间很短 但这终归不是什么好现象 尤其是打游戏的话 影响很大 但是一些有牌面的Boss也不能不配音乐 当然也可以通过其它方式解决 比如特定条件统
  • HTML5游戏实战(2):90行代码实现捕鱼达人

    捕鱼达人是一款非常流行的游戏 几年里赚取了数以千万的收入 这里借用它来介绍一下用Gamebuilder CanTK开发游戏的方法 其实赚钱的游戏未必技术就很难 今天我们就仅用90来行代码来实现这个游戏 CanTK Canvas ToolKi
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • Unity之获取游戏物体对象或组件的几个方法

    文章目录 前言 通过物体名称获取对象 GameObject Find Transform Find 通过物体标签获取对象 GameObject FindWithTag GameObject FindGameObjectWithTag Gam
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B

随机推荐

  • 谷歌浏览器如何安装vue调试工具

    下载vue devtools压缩包 git地址 vue devtools 安装环境 将下载的压缩包解压 并通过命令行进入vue devtools master文件夹中 输入安装命令 cnpm install进行安装 编译 输入编译命令 np
  • a-textarea实现自动出现滚动条不能自动伸缩

    deep textarea width 100 height 50px overflow y auto resize none
  • 2023年贵州省职业技能大赛“网络安全” 项目比赛任务书

    2023年贵州省职业技能大赛 网络安全 项目比赛任务书 2023年贵州省职业技能大赛 网络安全 项目比赛任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 Windows Linux A 2 Nginx安全策略 Linux
  • MYSQL数据文件默认在哪个目录下?

    原文地址 MYSQL数据文件默认在哪个目录下 在Windows平台默认一般在C ProgramData MySQL C ProgramData MySQL MySQL Server X X Data文件夹中 无论在Windows还是在Lin
  • STM32 (三)GPIO的八种模式及其原理

    一 GPIO简介 GPIO就是通用I O 输入 输出 端口 是STM32可控制的引脚 STM32芯片的GPIO引脚与外部设备连接起来 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 二 GPIO工作模式 1 四种输入模式 GPIO
  • 每天一个linux命令(46):vmstat命令

    vmstat是Virtual Meomory Statistics 虚拟内存统计 的缩写 可对操作系统的虚拟内存 进程 CPU活动进行监控 他是对系统的整体情况进行统计 不足之处是无法对某个进程进行深入分析 vmstat 工具提供了一种低开
  • 用C++做高级病毒

    今天教大家做几个超级厉害的病毒 看完这篇文章之后你就能成为一名高级黑客了 声明 若电脑收到损伤 作者一律不负责 1 鼠标病毒 作用 让鼠标一直停在一个地方动不了 include
  • js Dom事件

    1 onclick 点击事件 2 ondbclick 双击事件 3 onmousedown 鼠标按下事件 4 onmouseup 鼠标松开事件 5 onmouseenter 鼠标移入事件 不支持冒泡 只触发一次 6 onmouseover
  • xml实体小实例

    如何定义和使用实体 一下是实体的一个小实例 gt
  • C++里仿函数是什么

    一 什么是仿函数 仿函数的意思是 它不是函数 其实是个类 但用法和函数一样 既然是个类 就可以存储很多变量和其他的信息 然后实现纯函数实现不了的功能 所以在一些需要函数作为参数的地方可以用仿函数代替 在STL里很多地方用到了仿函数 二 仿函
  • Java 密码复杂度校验

    1 需求 复杂性 用户的密码中必须包含的字符类型 默认为中 弱 必须包含小写字母 中 必须包含小写字母 数字 强 必须包含小写字母 数字 大写字母 特殊字符 鼠标移入的提示文字相同 注 检查密码复杂度 仅新增账户 重置密码时生效 已有账户密
  • 揭示OLED透明屏数据:探索未来显示技术的潜力

    OLED透明屏作为一项颇具吸引力的显示技术 以其独特的特点和卓越的画质在市场上引起了广泛关注 在这篇文章中 尼伽将和大家一起深入探索OLED透明屏的数据 通过具体的市场趋势分析 技术指标解析 应用领域探讨和未来前景展望 为读者提供全面了解和
  • wish虚拟服务器,云服务器操作wish

    云服务器操作wish 内容精选 换一换 按需计费 按需计费是后付费模式 按弹性云服务器的实际使用时长计费 可以随时开通 删除弹性云服务器 包年 包月 包年 包月是预付费模式 按订单的购买周期计费 适用于可预估资源使用周期的场景 价格比按需计
  • [开发

    ModelMapper是一个用于对象之间转换的Java库 它能够自动映射一个Java对象的属性到另一个Java对象 依赖安装
  • C/C++

    文章目录 空间的读写 作用 实现strlen 实现strcpy 非字符空间 void 返回值 返回连续空间类型 示例 函数内部实现 示例 参考 麦子学院 嵌入式C语言高级 C语言函数的使用 空间的读写 void fun char p con
  • VUE enement-ui之table表格隐藏滚动条

    只需修改样式即可 deep el table body wrapper webkit scrollbar width 0 注意 element ui表格很多样式修改都需要加深度穿透才能生效 效果图
  • 深度神经网络的matlab实现,深度神经网络代码matlab

    为什么不用matlab做深度学习 matlab可以做深度学习 但是从实用性的角度来讲matlab的实现效率相对较低 训练耗时较长 初次学习计算机语言就选择matlab不是一个明智的选择 最好选用C或者Basic作为入门语言 matlab是一
  • 初探C语言链表(一)

    初探链表 一 静态链表 二 动态链表 初始化链表 1 尾插法建立链表 2 头插法建立链表 三 动态链表的基本操作 1 遍历 2 查找 3 插入 4 清空 5 删除 6 销毁 四 链表的综合应用 什么是链表 链表是由一系列节点组成 每个节点包
  • 面试经验:阿里Java后台开发

    最近原来实习时候的Boss联系我 说他跳槽到了阿里 问我有没有兴趣面一个Java后台开发岗位 考虑到我只工作了一年 现在去阿里肯定要降薪 因此也没有太强烈的意愿 但出于提升自我的角度考虑 参加了面试 一面 电话面试一小时 首先做一个简单的自
  • 09虚幻4【UE4】中模型沿着轨道运动

    目录 一 创建Track蓝图类 轨道 并添加一个Spline样条曲线 二 创建TrackCar 移动车 蓝图类并添加一个Mesh 车 方块都可以 三 编写TrackCar的蓝图逻辑 3 1 设置自定义事件MoveCar 3 2 添加时间轴