yuyang9119 / UnityAssetStoreSupport

If you run into any issues using my assets, please submit feedback here.
4 stars 0 forks source link

[Request] 路径动画 #13

Open xxl-game opened 3 years ago

xxl-game commented 3 years ago

后期能提供类似 Dotween 的路径动画吗,包括折线路径和曲线路径。

yuyang9119 commented 3 years ago

已经有这个功能了,请看一下 SimpleAnimations 这个例子。

xxl-game commented 3 years ago

已经有这个功能了,请看一下 SimpleAnimations 这个例子。

看了下,是有 Path 功能的,我之前漏看了。不过感觉目前的 Path 不是很好用。

感觉 Path 参数应该直接在 Animation 上设置,一个 Path 和 一个动画对应,现在感觉好像是一个 Path 是对应一个物体的。 另外,其实没太搞懂这个 Path 是怎么编辑的,点了 EditPath 按钮后,并不能看到路径的预览,只能看到曲线控制点的手柄,然后这个手柄并不能用鼠标直接拖动来操控,我这边拖动没反应,是需要用一个 Path 弹窗的参数来控制吗?没搞懂,很不直观的样子。

然后,感觉好像那个 Path 弹窗的 Rotationg 操作有 bug,无论我拖动 x,y,z,都是 z 在变化。

Path面板的问题

yuyang9119 commented 3 years ago

Path 设计为独立物体是更合适的,因为不同物体可能都用到同一个Path。独立的物体还可以方便的调整路径位置、缩放以及旋转。 目前路径需要开启gizmos才能看到,看看你的组件是否折叠或关闭了gizmos。 目前鼠标操作需要先点选控制柄,如果选择平面移动工具此时变成橙色方框,如果选择三维移动工具此时变成xyz 手柄,这样就可以移动了。之所以这样做是为了防止误操作。以后可能会改进操作方式。 旋转工具是用来编辑节点的旋转数据的,此数据与路径无关,用于物体沿着路径移动时控制物体的旋转。选择旋转工具时,下方会有一个look tangent 按钮,如果按下的话,旋转无论如何都会朝着路径切线方向,选中的节点出现一个环,这样就是受限制的编辑方式;如果没有选中看向切线,选中的节点会出现一个完整的rotation handle,这样就可以自由编辑了。 由于旋转值UI目前只是简单的将四元数转欧拉角编辑,所以会发现数值会自己变化,是正常现象。建议直接用三维控件编辑旋转。

xxl-game commented 3 years ago

多谢多谢,已经会了。

xxl-game commented 3 years ago
xxl-game commented 3 years ago

顺便说下,你的插件的界面做的都非常好看!秒杀丑陋的 Dotween!

yuyang9119 commented 3 years ago

多谢支持!关于用户体验细节,的确还有很多要改进的地方,但我平时实在太忙,不知道有没有时间去改进…… 关于2d路径的问题,我猜可能你的路径存在z方向的变化,比如某些手柄有深度,所以导致新增点会有深度变化。原理上,2d路径和3d路径是通用的,我也测试过当作2d来用是没问题的,你可以切换到3d场景检查下路径是否有问题。 你的图中蓝点和橙色的方框在一起,我猜深度可能有问题。如果你想制造拐点,可以把Broken勾选,这样就不会强制切线连续了。如果想做成直线或折线,推荐用 cardinal path,将曲线张力设置为0,比bezier path方便一点。

xxl-game commented 3 years ago

关于2d路径的问题,我猜可能你的路径存在z方向的变化,比如某些手柄有深度,所以导致新增点会有深度变化。原理上,2d路径和3d路径是通用的,我也测试过当作2d来用是没问题的,你可以切换到3d场景检查下路径是否有问题。 你的图中蓝点和橙色的方框在一起,我猜深度可能有问题。

2d 和 3d 确实是通用的,但是操作体验上来说,会有不同。

新建的路径点默认 z 轴就是有深度的,这个对 2d 游戏非常不方便,每个顶点我都需要手动切到 3d 视图,然后分别选择 2 个手柄操控点,然后数值 z 轴置 0,然后再切回 2d 视图。

多谢支持!关于用户体验细节,的确还有很多要改进的地方,但我平时实在太忙,不知道有没有时间去改进……

需不需要我义务帮你维护一下?可以讨论下体验细节,然后你觉得哪些修改是你同意的,符合你设计偏好的,我可以抽空试着帮你改下,能给我加个维护者名单就行 -。-

yuyang9119 commented 3 years ago

需不需要我义务帮你维护一下?可以讨论下体验细节,然后你觉得哪些修改是你同意的,符合你设计偏好的,我可以抽空试着帮你改下,能给我加个维护者名单就行 -。-

这个不太好吧……毕竟是卖出去的东西,还提要求让客户做贡献…… 这样,您愿意的话按自己想法随便改,如果你觉得可以的话把修改告诉我,我看看能不能采用,采用会将您列为维护者的!

xxl-game commented 3 years ago

我修改了一些源码来满足我项目的独特需求,不知道对你有没有用。

  1. 取消了 Hold 参数

在实际的开发过程中,我发现做出来的动画,在实际游戏播放时的效果偶尔 (频率还是比较高的) 会和编辑器下预览的不一样,经过 Debug 我发现这是由于个多个动画之间互相冲突导致的。例如,一个动画上的某个子 Animation 被另一个动画 Hold 住了,或者一个动画本身的第 3 个子 Animation 被第 7 个子 Animation Hold 了,导致预想的效果播放不出来。

虽说这个问题可以通过修改素材上的动画实现来解决,但是我觉得这样并不好,我接触过的其他很多种 Tween 库都没有 Hold 这种参数,Hold 虽然提供了一种更丰富的制作方法,但是其带来的问题我觉得是更严重的,一旦出现表现不一致,查找起来非常麻烦,解决的时候还要重做效果。

我认为美术工具应该尽最大可能满足编辑预览的效果和实际运行的效果一致,如果可能产生多个动画的冲突,这种冲突是动画播放逻辑的冲突,应该在游戏逻辑设计层面解决,而不是修改美术层的动画参数,所有我去掉了 Hold 这个容易引起表现错误的功能。

  1. 取消了默认播放的功能,改为可配置是否自动播放。

默认播放这个功能也很会引起一些显示错误问题。 例如当使用嵌套 TweenPlayer 动画时,父 TweenPlayer 动画和子 TweenPlayer 动画会同时开始播放,造成显示错误。 又例如制作了多个需要在特定时间播放的动画,但是TP预制体的初始状态没有设置为 enable = false,导致预制体加载后一堆动画一起播放或者至少是 Sample 了一次,导致显示乱七八糟。动画播放感觉不能依赖 enable。

我把 TP 的默认状态改为不会自动播放,而是手动通过代码播放,这样可以避免多个动画冲突导致的显示错误。如果确实需要自动播放,通过一个专门的 autoPlay 参数去配置。

  1. 取消了 SampleOnAwake,原因也是多个动画的冲突问题。

  2. 限定一个物体上只能有一个 TweenPlayer 组件。

现阶段,就算一个物体上有多个 TweenPlayer ,貌似也很难精准的获取到某一个。Dotween 是通过给每个动画一个手填的 id 字段来区别一个物体上的多个组件的。Cinemachine 和 Timeline 是限制一个物体上只能有一个组件来解决这个问题的。我觉得限制一个物体上只有一个组件的方式比较好,如果有多个动画,那就做多个空物体,这样无论是在 Hierarchy 窗口查找动画,还是程序代码里获取动画,都比较便捷。

  1. 增加了一个可能出现的报空防错

animation 有可能是空的 (我遇到过),在使用 animation 的地方都做了判空。

  1. MiscellaneousAnimation 动画增加 autoplay 功能。

由于我的其他修改取消了 enable = true 的自动播放,这里再增加这个功能:如果一个 Misce 动画激活了另一个物体,且该 Misce 动画勾选了 autoPlay ,会自动播放被激活物体上的 TweenPlayer。这里使用的 autoPlay 是 Misce 动画上的而不是被激活物体上的,这样更灵活些。

  1. Timeline 扩展

可以在 Timeline 上播放做好的 TweenPlayer 动画。

  1. 编辑器界面优化:增加动画被折叠时的动画物体名称显示

TweenPlayer 的子 Animation 如果被折叠了,就只能看到动画类型,看不到动画物体,我增加了动画物体显示。

  1. 编辑器界面优化:增强黑色主题的进度条对比度

原本的配色在黑色主题下我感觉对比度有些低,不容易看清楚,所以调整了配色。

  1. 编辑器界面优化:取消边框。

这个纯粹是我个人喜好。

修改后的外观:

image

image

配色对比

image

yuyang9119 commented 3 years ago

感谢反馈,等我忙完这一阵我看看细节……最近太忙……

xxl-game commented 2 years ago

在AssetStore上看到一个新出的Tween插件和你的长得好像!连类的名字都是TweenPlayer。

image

试用了一下,感觉不咋样,弃了。

yuyang9119 commented 2 years ago

…………

xxl-game commented 2 years ago

你的游戏搞得咋样了,还有空更新维护插件吗。

yuyang9119 commented 2 years ago

最近是没有的。。

o2co2 commented 2 years ago

物体的显示 是要把target定义到 TweenAnimation 里?还是传值到父级里