-
unity3d动画插件iTween-路径动画的制作
2014-04-23 16:19:07unity3d动画插件iTween-路径动画的制作 iTween是一个动画库, 用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看http://itween.pixelplacement.com 我今天主要是说一下用iTween来制作...
unity3d动画插件iTween-路径动画的制作 iTween是一个动画库, 用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看http://itween.pixelplacement.com 我今天主要是说一下用iTween来制作一段路径动画的方法和步骤。首先我们下载iTween插件并安装,官方商店就有,免费的。 安装方法很简单,可以再Project视图中单击鼠标右键,选择ImportPackage->CustomPackage找到下载插件的文件夹,导入插件即可。
也可以直接将插件拷贝到工程文件中的Assets文件夹中,回到unity3d中双击iTween Visual Editor文件即可导入插件。插件导入成功后,即可在菜单栏中的Component中多出了一个iTween选项,并且在Component->Scripts中多出了三个选项,这些都是我们马上要用到的。
好了,准备工作已做完,下面开始制作我们的路径动画了。首先制作一个简单的场景。然后创建一个简单的场景,命名为path,制作路径。选择我们新建的path然后在Component->Scripts中选择ITween Path。
添加完成后即可在Inspector视图中看到我们添加的ITween Path属性
Path Name是路径的名称。我们命名为first path。Path Color为路径线的颜色。将他改成红色。一遍可以清晰的看到他。Node Count为路径的关键点数量,下面Node为每个关键点坐标。我们将Node Count的值改为6,然后设置关键点的坐标。方法1:直接改变Node下的想,x,y,z的值。防范2:在Scene视图中直接拖动每个点的坐标。制作好后的结果如图:
到这里路径已经制作好了,下面将一下怎么把这条路径和我们的运动物体连接起来呢。首先我们建立一个CUBE作为要运动的物体命名为player。选择我们新建的player然后点击菜单栏的Component->iTween->iTweenEvent.
添加完成后在Inspector视图中看到iTweenEvent属性。
属性非常多。下面介绍几个长影属性。Name:为动画时间的名称。命名为MyFirstEventShow Icon In Scene: 是否在场景中显示图标,勾选改选项。Play Automatically:是否在运行是自动播放,勾选改选项。Event Type下拉框选择MoveTo,Path 勾选选择Path-〉firstpath,在往下勾选Time,时间设置为30;勾选easetype设置为linear设置为匀速;设置好之后如图:
好了可以运行游戏了。发现盒子沿着我们设置的路径开始运动了。(住:因为参数太多。还没有完全研究,希望大家一起研究学习,有不对的地方还望高手指教)这个就写这么多了。关于动态调用,和几个路径相互切换下次再讲吧。
上一节我们讲了iTween路径动画的制作过程。这一节我们看下怎么动态调用它,和创建多个路径的方法,动态切换的方法。 首先打开上次做的项目,选择player物体,在Inspector视图中讲iTween Event下的play Automatically的选框勾掉。因为我们要动态控制动画的播放,不需要它运行时就播放了。这些做完之后就开始写代码了,创建一个C#脚本,命名为Animation control,并写入一下代码:public class Animationcontrol : MonoBehaviour { public GameObject player;//带路径动画的物体 void OnGUI() { if (GUI.Button(new Rect(10, 70, 50, 30), "play")) { //播放路径动画 iTweenEvent.GetEvent(player,"firstevent").Play(); } if (GUI.Button(new Rect(100, 70, 50, 30), "stop")) { //停止路径动画 iTweenEvent.GetEvent(player,"firstevent").Stop(); } }}分析上面的脚本。我们用iTweenEvent.GetEvent(player,"firstevent").Play();和iTweenEvent.GetEvent(player,"firstevent").Stop();来控制动画的停止和播放,其中player为带有路径动画的物体,"firstevent"需要与路径动画的名称保持一致。就是Inspector视图中讲iTween Event下的Name的值
脚本完成后,讲脚本添加到我们的摄像机上。将player拖放到变量player
运行游戏,点击play按钮动画开始运行,点击stop按钮,动画停止运行。下面我们来看下怎么给一个物体添加多段路径,及切换。选中我们path物体,在给他添加一个ITweenPath。如图:
给path name命名为second pathParhColor最好与第一个颜色分开的颜色分开Node Count改为5。然后设置关键点。
制作完成后。在Scene中就出现了两条路径
选择player物体。在给他添加一个。ITween Event设置如下:勾选path并选择secnd path,勾选time设置时间为20.勾选easetype选择linear设置匀速运动。如图:
这样我们就给物体player添加了两段路径动画,下面我们就用代码来控制这两段动画代码如下: public class Animationcontrol : MonoBehaviour { public GameObject player;//带有动画的物体 void OnGUI() { if (GUI.Button(new Rect(10, 70, 50, 30), "firstAN")) { //路径1的起始位置 player.transform.position =new Vector3(-94.50654f, 17.2556f, 15.62861f); //播放动画1 iTweenEvent.GetEvent(player,"firstevent").Play(); //停止动画2 iTweenEvent.GetEvent(player,"secondevent").Stop(); } if (GUI.Button(new Rect(100, 70, 50, 30), "secondAN")) { //路径2的起始位置 player.transform.position =new Vector3(-95.15093f, 10f, 1.327053f); //播放动画2 iTweenEvent.GetEvent(player,"secondevent").Play(); //停止动画1 iTweenEvent.GetEvent(player,"firstevent").Stop(); } }}添加到游戏物体,运行游戏。这样就算OK了。
-
Unity 动画路径预览工具
2016-09-23 13:03:37在使用 Unity 开发游戏过程中,经常使用到 Animation 功能来为物体做动画效果,其中就包括物体的位移路径动画,比如过场动画里镜头的路径移动等。现有的 Animation 功能只能编辑关键帧所在时刻的物体位置,而无法...原因
在使用 Unity 开发游戏过程中,经常使用到 Animation 功能来为物体做动画效果,其中就包括物体的位移路径动画,比如过场动画里镜头的路径移动等。现有的 Animation 功能只能编辑关键帧所在时刻的物体位置,而无法一览物体路径动画的轨迹,造成美术人员编辑路径动画时,没办法直观的查看所编辑的路径曲线。另外,在 Animation 窗口里进行调整曲线的切线,非常的不便,只能在180度的斜率范围内调整数值。
目标
实现实时的动画路径预览,快速定位关键帧,方便编辑切线。
解决
为了可以实时预览动画路径,那么就需要获得当前 Animation 窗口的动画数据,但是 Unity 不开放操作 Animation 窗口类,只能通过反射来处理。 创建的 AnimationWindowUtil 类,即是为了与 Animation 窗口的数据进行交互。
动画数据里面存储的是使用埃尔米特(Hermite)曲线公式的值,它是使用各个顶点的斜率来构建曲线,这也造成了在 Animation 窗口编辑切线的不便,没法精确控制斜率的值。
合适的方式是使用贝塞尔(Bézier)曲线,它提供了两个控制点来调整切线,控制点的位置比起控制斜率的值大小来的直观方便多了。好在这两种曲线公式是可以转换的,Hermite 曲线转换成 Bézier 曲线步骤如下:P0(b) = P0(h)
P1(b) = P0(h) + M0(h) * 1/3
P2(b) = P1(h) - M1(h) * 1/3
P3(b) = P1(h)转换完成之后,则可通过绘制 Bézier 曲线,将动画路径展现出来。
绘制的绿色点是每个关键帧的位置,点中绿色点,即可直接在 Animation 窗口定位到当前关键帧,方便直接立即编辑。点中绿色点时,会在该点的旁边出现灰色控制点,直接点中控制点,就可以直接调整该点的切线了。
这样来调整切线比在 Animation 窗口里面进行调整斜率方便的多了。切线调整完成后,通过 Bézier 曲线转换成 Hermite 曲线,来写回动画数据。
当关键帧过多时,可能会遮挡住曲线的走向绘制,特别是在转弯的地方,故也提供关闭显示关键帧点的功能。结语
Unity 编辑器开放的接口不能够实现于想要实现的功能时,只能反编译编辑器代码,分析相应所封闭起来的功能代码,才能获取到想要的数据。动画数据存储的是 Hermite 曲线公式,而这种曲线无法在场景里面进行方便的调整,只能通过转换成 Bézier 曲线。
源码
-
Unity3D 制作路径动画 插件包
2017-07-11 14:13:13 -
Cinemachine教程 | Unity中如何制作路径动画?
2020-03-15 20:36:01摘要:在Unity中制作路径动画是有挺多方式的,基于Cinemachine的Dolly Path是一个简单便捷的方法,咱们来快速的学习一下吧! 洪流学堂,让你快人几步。你好,我是跟着大智(VX: zhz11235)学Unity的萌新,我叫小新,...摘要:在Unity中制作路径动画是有挺多方式的,基于Cinemachine的Dolly Path是一个简单便捷的方法,咱们来快速的学习一下吧!
洪流学堂,让你快人几步。你好,我是跟着大智(VX: zhz11235)学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。
制作路径动画在Unity中是100%会遇到的一个需求。方式也有很多,列举几种:
1、通过Animation制作动画(优点:简单;缺点:不直观,无法直观看到路径中间的插值位置,灵活性差)
2、通过Tween插件(优点:灵活性高,可通过代码运行时修改路径点;缺点:有一定学习成本,可视化插件需付费,如Dotween Pro)
3、通过代码手撸一个路径动画(优点:灵活性高,最适配自己项目的需求;缺点:难度较高)
4、通过Cinemachine的Dolly Track(优点:Unity官方插件,版本适配好,功能够用;缺点:灵活性稍差)最近咱们一直在学习Cinemachine,当然这篇理所当然应该尝试下Cinemachine的Dolly Path。Let‘s go!
使用Dolly Path(滑轨路径)
路径动画有两个部分:如何创建路径以及如何使用这个路径。
创建Dolly Path
Cinemachine中有两种Dolly Path组件:
- CinemachinePath组件:每个路径点都可以设置位置、切线和翻转角度,可以最大程度控制路径。但是如果切线设置的不合理,相机在路径上运动时可能会有不稳定的现象。
- CinemachineSmoothPath组件:每个路径点都可以设置位置和翻转角度。组件中会使用Bezier算法来推算路径点之间的位置。虽然SmoothPath不能完全控制路径,但是整个路径会更平滑和连续。推荐优先使用
如何创建Dolly Path呢?
方法一:如果是在相机上制作路径动画,可以直接创建Dolly Camera。菜单栏Cinemachine > Create Dolly Camera with Track。点击后会创建一个虚拟相机和dolly path。这个Path默认是SmoothPath。虚拟相机会自动设置好Body属性为Dolly Track并且Path属性赋值为创建出来的Dolly path。
方法二:如果是给GameObject制作路径动画,可以直接创建Dolly Cart。菜单栏Cinemachine > Create Dolly Track With Cart。点击后会创建一个虚拟相机和DollyCart。这个Path默认是SmoothPath。只需要把做路径动画的物体作为Cart的子物体即可。
方法三:直接创建Dolly Path。创建一个空物体,给空物体添加CinemachinePath或CinemachineSmoothPath组件。
如何编辑路径点呢?
1、在Hierarchy中选中Path物体。这时候能在Scene中看到整个路径以及上面的路径点(小白球)。
2、可以在Inspector上的路径点列表右下角点击加号+添加路径点。
3、可以点击场景中的小白球或者Inspector上路径点前面的序号按钮选中一个路径点。
4、选中路径点时,场景中路径点上会有移动工具,可以用来可视化移动。此外还可以在Inspector上直接修改数值。CinemachinePath组件
CinemachinePath中定义了一系列的路径点,定义在世界空间中。每个路径点都有位置、切线和翻滚角度。在路径点之间使用贝塞尔曲线插值,来获得平滑、连续的路径。
提示:尽管路径位置始终是平滑连续的,但沿路径设置动画时仍然可能会产生不稳定的现象。当设置的切线没有保证一阶和二阶导数的连续性时,就会发生这种情况。手动做到这一点并不容易,为避免这种潜在的不稳定现象,尽量使用CinemachineSmoothPath。CinemachineSmoothPath自动设置切线以确保完全平滑。
属性详解
Resolution 每个路径点之间采样的次数。Cinemachine在计算路径距离时使用此值来限制粒度。场景视图中路径Gizmo上的交叉线反映了该值。Appearance 路径在场景中显示的外观。只在编辑器中生效。
- Path Color 选中路径时的颜色。
- Inactive Path Color 未选中路径的颜色。
- Width 路径轨道的宽度。
Looped 选中后,路径会首尾相连。
Path Length 整个路径长度,这个数据是只读的,根据所有路径点计算出来的。
Selected Waypoint 当前选中的路径点的信息。
Prefer Tangent Drag 当切线和位置的Gizmos在Scene视图中重合时,选中该选项将Gizmo用来调节路径点的切线。Waypoints 定义路径点的列表。
- Position 位置,在路径局部空间中的位置(即相对于路径GameObject本身的变换)
- Tangent 切线,定义了路径点上曲线的切线。切线的长度代表了贝塞尔的强度。Path路径点两边默认使用对称的切线以确保平滑。
- Roll* 翻转角度。朝向的其他轴方向是从切线和世界的向上向量推断出来的。
CinemachineSmoothPath组件
与Cinemachine Path不同,CinemachineSmoothPath组件保证了一阶和二阶连续性,这意味着沿路径动画的对象不仅位置而且角速度也将是平滑且连续的。
属性详解
Resolution 每个路径点之间采样的次数。Cinemachine在计算路径距离时使用此值来限制粒度。场景视图中路径Gizmo上的交叉线反映了该值。Appearance 路径在场景中显示的外观。只在编辑器中生效。
- Path Color 选中路径时的颜色。
- Inactive Path Color 未选中路径的颜色。
- Width 路径轨道的宽度。
Looped 选中后,路径会首尾相连。
Path Length 整个路径长度,这个数据是只读的,根据所有路径点计算出来的。Waypoints 定义路径点的列表。
- Position 位置,在路径局部空间中的位置(即相对于路径GameObject本身的变换)
- Roll* 翻转角度。朝向的其他轴方向是从切线和世界的向上向量推断出来的。
如何使用这个路径
滑轨路径(Dolly Path)是场景中的路径点数组形成的一条路径。
使用滑轨路径分为相机路径动画和其他物体路径动画:
- 相机路径动画建议使用Cinemachine中的VirtualCamera,然后Body的算法设置为Tracked Dolly,然后将其中的Path属性设置为编辑好的Path。
- 其他GameObject的路径动画可以使用Cinemachine中的Dolly Cart组件。
CinemachineDollyCart组件制作路径动画
Cinemachine Dolly Cart翻译过来是滑轨小车。相当于把一个物体放在小车里,然后在轨道上移动。这个组件就是把当前所附着的GameObject沿着path移动。
可以直接从菜单栏创建Cinemachine > Create Dolly Track With Cart,这会创建出来一个CinemachineSmoothPath和CinemachineDollyCart。也可以直接给GameObject添加CinemachineDollyCart组件。
属性详解
Path 路径对象
Update method 更新的方法。- Update 正常更新
- Fixed Update 与物理更新同步
- Late Update 通常用于相机的更新
Position Unit 位置的单位
- Path Units 使用路径点的序号。比如0代表第一个路径点,1代表第二个路径点。
- Distance 使用路径的总长度。
- Normalized 归一化。0代表路径最开始的位置,1代表路径结束的位置。
Speed 移动小车的速度。基于Position Unit设置的单位。如果速度不为0,则小车会根据速度自动移动。
Position 当前小车所处的位置。基于Position Unit设置的单位。扩展阅读
- 【Cinemachine智能相机教程】VirtualCamera(四):Noise属性
- 【Cinemachine智能相机教程】VirtualCamera(三):Aim属性
- 【Cinemachine智能相机教程】VirtualCamera(二):Body属性
- 【Cinemachine】VirtualCamera虚拟相机详解(一)
- 5分钟入门Cinemachine智能相机系统
- Unity编辑器录屏神器:Unity Recorder
- 5分钟制作过场动画
- 【建议收藏】找不到免费的角色动画?来试试mixamo
【扩展学习】在洪流学堂公众号回复
timeline
可以下载Timeline&Cinemachine系列教程全文带目录PDF哦,更有本文的视频教程等着你!
呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。
我是大智(欢迎加我微信:zhz11235),你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
-
unity使用dotween做路径动画
2018-04-17 21:09:10使用很简单,将dotween插件包导入到Unity工程中 下面例子很简单,点击鼠标左键运动,点击鼠标右键暂停,再点击鼠标左键,接着运动 using System.Collections; using System.Collections... -
unity iTweenPath 动画插件
2017-12-26 13:48:39unity iTweenPath 动画插件, 适合做轨迹移动, 塔防路径。 -
Unity学习-用Dotween动画系统能做什么 2 路径动画
2019-01-22 15:07:36这一部分比较简单,用animation也可以轻易实现,无非是创建关键帧,然后在每个关键帧上录制物体的路径,然而Dotween做这个非常轻松,只需要直接在屏幕上绘制路径就可以了,从工作流上更加轻量。 绘制路过点 值得... -
Unity_DoTween_Path路径动画的使用
2019-12-19 17:49:44参数二:完成动画需要 多少秒 参数三:路径的弧度是曲线还是直线 参数四:路径模式 Full3D 参数五:路径点的精密度 数值越大越精密 参数六:路径线路的颜色 SetOptions(true) 路径从头回到原点 SetLookAt(0) 路径... -
dotween路径移动_UnityDOTween插件学习(3)获取数据、协程、路径动画
2021-01-14 03:56:03本文及系列参考于Andy老师的DOTween系列欢迎大家关注10、获取数据类方法返回所有暂停的动画,没有则返回nullvar list = DOTween.PausedTweens();返回所有真正播放的动画,没有则返回nullvar list = DOTween.... -
时长 unity_Unity 动画实现原理探究
2021-01-13 13:17:28前言Unity 中的动画,是基于属性绑定、关键帧、按时间在关键帧之间...因为需要保存动画数据,所以需要继承 ScriptableObject 类,我们需要保存的数据有 关键帧数组、是否循环、播放时长、绑定路径。然后再来看关键帧... -
Unity---DOTween插件学习(3)---获取数据、协程、路径动画
2019-10-07 04:47:1512、路径动画 本文及系列参考于Andy老师的DOTween系列 欢迎大家关注Andy老师 10、获取数据 类方法 返回所有暂停的动画,没有则返回null var list = DOTween.PausedTweens(); 返回所有真正播... -
解决unity particleSystem动画播放不出的问题
2020-07-26 18:00:29//开启通向Walk动画的路径 setSpeedX(-speedX);//左移 //播放灰尘特效,一定要加判断,不然上一个动画才刚开始播,就被打断,播下一个动画,每个动画都只播出几毫秒,粒子都还没放出来,那么连粒子都看不到 -
unity基础开发----Itween路径位移动画实现
2013-12-02 10:57:54itween插件在unity也是经常使用的,本来就行做一个很简单的路径动画,但是看到很多的教程都是很复杂的。在这里实现的功能就是用itween path工具画出点,用物体在平滑的曲线上进行运动,实现一个路径动画的效果。 ... -
【Unity学习】解决Animation路径错误导致动画无法播放的问题
2020-04-29 01:07:09通过菜单Window-->Animation打开帧动画窗口,在左边箭头位置双击,即可修改动画的组件路径,根据物体组件的路径修改即可;或者在外部将物体的组件路径调整成和该路径相同也能解决问题。 ... -
Unity入门(2)用iTween实现动画路径绘制
2018-03-14 21:08:14环境:unity5.6.5一、iTween的下载安装在Asset Store 中搜索iTween选择安装iTween Visual Editor, 可以看到Assets文件下多了一个iTweenEditor的文件夹,这个路径不要动,如果要将这个插件导入到其他项目,也直接... -
unity 动画原动画返回_Unity2D研究院之自动生成动画、AnimationController、Prefab(一)...
2021-01-30 12:11:42using UnityEngine;using System.Collections;using System.IO;using System.Collections.Generic;using UnityEditor;...public class BuildAnimation : Editor{//生成出的Prefab的路径private s... -
unity中创建动画按钮
2019-10-24 18:04:06unity中UGUI如何创建按钮动画 新建Button 选择按钮动画(animation)点击 Auto Generatre Animation 2.点击之后会弹出文件夹选项,就会意思是新建的这个动画的保存路径,自己选择路径命名即可,但要在Assets文件夹... -
Unity动画插件Hotween的使用
2019-12-19 16:04:32如果做一般常见的动画建议使用Hotween,但是遗憾的是Hotween不支持路径动画,如果支持就完美了。 官方网站:http://www.holoville.com/hotween/index.html 根据Hotween官方网站介绍,hotween是运行快,类型安全和面向... -
Unity_DOTween动画的学习(十)_DOTween路径编辑器的使用和技巧了解(DOTween秒杀iTween精华)
2017-10-05 13:59:48Unity_DOTween动画的学习(十)_DOTween路径编辑器的使用(DOTween秒杀iTween精华) 在编辑DOTween路径编辑器之前,先给对象添加DOTween Path路径编辑器组件. 1.添加,删除,调整路径点: 2.通过选择PathType来控制路径点... -
ue4中的路径动画和动作混合初探笔记
2017-04-28 17:24:30首先说下unity中的路径动画,实际上unity并没有自带可显示编辑路径动画(5.3之前),如果需要做路径动画,必须靠插件来完成,好在插件还是挺多了 比如各种tween插件,都支持显示摆放路径点,当然在unity中也可以... -
Camera Path Animator v3.54 (unity 动画插件)
2017-04-20 10:08:19path point:点路径,用来设置路径的点的位置 control point :用贝塞尔曲线来改变路径 FOV:用于控制摄像机的视图. speed:用于控制曲线的动画的速度。...Tilts:控制摄像机倾斜通过路径动画模式的路径使用 -
游戏开发unity插件Cinemachine系列:制作摄像机沿路径移动的动画
2020-03-23 18:17:27可以参看: https://blog.csdn.net/zhenghongzhi6/article/details/104885429/ -
unity编译器安装路径_Unity3d 规范默认 目录结构
2020-12-22 10:53:47Assets* 3rd-Party (第三方插件),C#写的第三方插件* Animations (动画相关的部分)* Audio (音效相关的部分)* Music (音乐相关的部分)* SFX (特效音乐相关的部分)* Materials (材质相关的部分)* Models (模型相关的... -
unity 播放过场动画
2013-10-21 23:44:00public var url="file:///c:/sample.ogg"; //文件路径 function Start () { //拼凑一个url url="file:///" + Application.dataPath + "/video/sample.ogg"; print(url); // 开始... -
Unity:资源加载,路径拼接技巧,代码控制动画的播放,简版
2018-04-25 20:07:04路径拼接技巧:string path = string.Format("{0}{1}", "Prefabs/huowu/huowu0", i + 1);通过资源加载的方式,加载精灵图片,用代码控制游戏对象身上的精灵图片,已达到播放动画,控制游戏...
-
骁龙870和天玑1000+哪个好 天玑1000+和骁龙870对比,哪个更强
-
Windows系统管理
-
如何在文件夹里打开可视化工具?
-
鸿蒙内核源码分析(工作模式篇) | 鸿蒙开机代码长什么样 ? | 中文注解HarmonyOS源码 | v36.01
-
批处理文件语法
-
左侧侧边栏导航
-
基于Qt的LibVLC开发教程
-
网络编程
-
MySQL Router 实现高可用、负载均衡、读写分离
-
龙芯生态应用开发基础:C语言精要
-
测试数据规范
-
MOG_BattleCursor.js
-
vb读文件属性.rar
-
ue4.26源码版本网盘地址
-
DameWareNT.rar
-
SecureCRT+FX+keygen_x86+x64_v8.0.zip
-
VIPer53 开关电源 12V2A电路图+PCB
-
pygame键盘输入框拓展(这个包特别简单,也不用加别的复杂的拓展,小白都可以直接简单使用)
-
Docker从入门到精通
-
Scrum敏捷项目管理要点总结.pdf