找回密码
 注册帐号

扫一扫,访问微社区

脚本 【动画切换问题】如何让上个动画切换时的状态, 作为下一个动画初始的状态

19
回复
793
查看
[ 复制链接 ]
7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
2018-11-3 09:21:34 显示全部楼层 阅读模式
20蛮牛币
问题:如何让上个动画切换时的状态, 作为下一个动画初始的状态?
例如下图:目前有A和B两个点,A点在上,B点在下。有一个Cube,这个Cube身上有两段动画,一段是An1,即从A点位移到B点的动画。另一段动画是An2,它是从B点位移回A点的动画。
正常情况下,如果这个Cube,正常播An1的动画,并且播放完毕后,再播An2的动画,这个Cube整个动画流程没有问题,从A到B,又从B到A。但是如果这个Cube在A到B的过程,到了任意位置的时候,我切换播B到A,也就是An2的动画的时候,无论当前这个Cube在什么位置都会位移回An2的初始位置,即B的位置。

怎么能让它保持当前的模型状态呢,在当前状态的基础上,进行下一个动画的播放。也就是说如果这个Cube开始播放An1,刚走到一半,这时动画切换成An2了,那么这个Cube直接原地掉头播放当前位置到A点的动画(当前位置到A点的动画就是B点到A点动画的一部分)。

我有个思路不知道对不对,也不知道是不是我把问题想复杂了。

就是能不能动态设置Transition Offset属性。就是比如从A点到B,正常时间是1,刚走了0.2,就要切换成B到A,那么就设置一下B到A的初始进度为0.8。这样能行不?


盼望大神给予解答!感激不尽!



回复

使用道具 举报

5熟悉之中
825/1000
排名
3288
昨日变化

1

主题

50

帖子

825

积分

Rank: 5Rank: 5

UID
253196
好友
5
蛮牛币
2688
威望
0
注册时间
2017-11-8
在线时间
310 小时
最后登录
2019-4-4
2018-11-3 09:21:35 显示全部楼层
本帖最后由 jwh1108 于 2018-11-6 16:58 编辑

这样设置假设动画机是CubeAnimator,float time=1-CubeAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime;
CubeAnimator.Play("B",0,time);这样就可以了吧。
参与人数 1鲜花 +5 收起 理由
爱情程序员 + 5 很给力!

查看全部评分总评分 : 鲜花 +5

回复

使用道具 举报

2初来乍到
137/150
排名
16593
昨日变化

0

主题

25

帖子

137

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
241
威望
0
注册时间
2016-3-25
在线时间
52 小时
最后登录
2019-2-14
2018-11-3 16:28:35 显示全部楼层
图片没有加载出来,不知道什么原因。
你举的这个位移的例子,想实现效果,最好是用代码写,不要用动画;
如果是必须用动画,用Animator,设置状态参数,可以自动切换。
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-4 16:54:51 显示全部楼层
MaxSong 发表于 2018-11-3 16:28
图片没有加载出来,不知道什么原因。
你举的这个位移的例子,想实现效果,最好是用代码写,不要用动画;
如 ...

图不重要,就是一个Cube在两个点之间移动的动画,一个是从A移动到B,另一个是从B移动到A。比方说用上下箭头来触发这两段动画。按下箭头,播放从A到B的动画。按上箭头,播放从B到A的动画。首先按下箭头,播A到B的动画,播放到一半的时候,按上箭头。这是动画并没有原地掉头,而是从B的起点开始播B到A的动画了。就是这个问题。。。
回复

使用道具 举报

7日久生情
1519/5000
排名
2307
昨日变化

4

主题

325

帖子

1519

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
175097
好友
4
蛮牛币
1882
威望
0
注册时间
2016-10-12
在线时间
566 小时
最后登录
2019-4-26

迈向小康

2018-11-5 09:03:48 显示全部楼层
这个可以 将每段动画的初始一帧 切出来 作为一个状态 ,切换时先切到一帧动画上 然后在切到每段动画上 这种方法针对于Animation 动画可以
回复

使用道具 举报

7日久生情
1519/5000
排名
2307
昨日变化

4

主题

325

帖子

1519

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
175097
好友
4
蛮牛币
1882
威望
0
注册时间
2016-10-12
在线时间
566 小时
最后登录
2019-4-26

迈向小康

2018-11-5 09:06:23 显示全部楼层
物体移动的话 做动画不如直接用DOTween 实现方便
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-5 14:59:06 显示全部楼层
菜鸟笨笨 发表于 2018-11-5 09:06
物体移动的话 做动画不如直接用DOTween 实现方便

我就是举个例子,实际动画并不是直线运动,是一个设备的操作动画。
回复

使用道具 举报

7日久生情
1519/5000
排名
2307
昨日变化

4

主题

325

帖子

1519

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
175097
好友
4
蛮牛币
1882
威望
0
注册时间
2016-10-12
在线时间
566 小时
最后登录
2019-4-26

迈向小康

2018-11-5 15:18:27 显示全部楼层
爱情程序员 发表于 2018-11-5 14:59
我就是举个例子,实际动画并不是直线运动,是一个设备的操作动画。

这种我说的第一种就可以 我是这么干的
回复

使用道具 举报

2初来乍到
137/150
排名
16593
昨日变化

0

主题

25

帖子

137

积分

Rank: 2Rank: 2

UID
143473
好友
0
蛮牛币
241
威望
0
注册时间
2016-3-25
在线时间
52 小时
最后登录
2019-2-14
2018-11-5 16:37:00 显示全部楼层
爱情程序员 发表于 2018-11-4 16:54
图不重要,就是一个Cube在两个点之间移动的动画,一个是从A移动到B,另一个是从B移动到A。比方说用上下箭 ...

你可以试试使用同一个动画,然后切换动画speed,变为-1;
回复

使用道具 举报

3偶尔光临
190/300
排名
8822
昨日变化

0

主题

11

帖子

190

积分

Rank: 3Rank: 3Rank: 3

UID
300331
好友
0
蛮牛币
465
威望
0
注册时间
2018-10-17
在线时间
47 小时
最后登录
2019-1-27
2018-11-5 19:09:59 显示全部楼层
个人建议:切换动画需要将上一个动画关闭,然后再开启另一个动画,如果想达到你所说的效果的话,可以在第一个动画关闭的延迟上做改动,比如说增加动画关闭的延迟时间3s-5s,可以试试
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-6 08:48:08 显示全部楼层
菜鸟笨笨 发表于 2018-11-5 15:18
这种我说的第一种就可以 我是这么干的

我想想的,十分感谢!!!
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-6 08:52:14 显示全部楼层
MaxSong 发表于 2018-11-5 16:37
你可以试试使用同一个动画,然后切换动画speed,变为-1;

这是个办法,但是就是感觉有点曲线救国的意思。我就是不知道Unity状态机有没有这么个功能,就是动画在切换的时候能保持上个动画结束时的状态。或者换个思路就是后一个动画能不能同步到跟前一个动画一样的状态,并从那个状态开始播动画。
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-6 08:55:21 显示全部楼层
hooyion 发表于 2018-11-5 19:09
个人建议:切换动画需要将上一个动画关闭,然后再开启另一个动画,如果想达到你所说的效果的话,可以在第一 ...

应该是不行的。。。不过也谢谢你!
回复

使用道具 举报

3偶尔光临
190/300
排名
8822
昨日变化

0

主题

11

帖子

190

积分

Rank: 3Rank: 3Rank: 3

UID
300331
好友
0
蛮牛币
465
威望
0
注册时间
2018-10-17
在线时间
47 小时
最后登录
2019-1-27
2018-11-6 11:46:41 显示全部楼层
爱情程序员 发表于 2018-11-6 08:55
应该是不行的。。。不过也谢谢你!

可以试试
回复

使用道具 举报

7日久生情
3037/5000
排名
473
昨日变化

29

主题

436

帖子

3037

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
55374
好友
17
蛮牛币
5754
威望
0
注册时间
2014-11-14
在线时间
1004 小时
最后登录
2019-4-26
QQ
楼主 2018-11-7 08:39:33 显示全部楼层
jwh1108 发表于 2018-11-6 16:57
这样设置假设动画机是CubeAnimator,float time=1-CubeAnimator.GetCurrentAnimatorStateInfo(0).normalize ...

嗯嗯,我也想到这个了。过后试试。十分感谢!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则