游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:561

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 452|回复: 19

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

[复制链接]  [移动端链接]
7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

UID
55374
好友
17
蛮牛币
5372
威望
0
注册时间
2014-11-14
在线时间
902 小时
最后登录
2018-11-18
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熟悉之中
581/1000
排名
4490
昨日变化
1

1

主题

43

帖子

581

积分

Rank: 5Rank: 5

UID
253196
好友
4
蛮牛币
1892
威望
0
注册时间
2017-11-8
在线时间
215 小时
最后登录
2018-11-17
发表于 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 很给力!

查看全部评分

[发帖际遇]: jwh1108 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

UID
55374
好友
17
蛮牛币
5372
威望
0
注册时间
2014-11-14
在线时间
902 小时
最后登录
2018-11-18
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的动画了。就是这个问题。。。

回复

使用道具 举报

6蛮牛粉丝
1078/1500
排名
3334
昨日变化
13

3

主题

272

帖子

1078

积分

Rank: 6Rank: 6Rank: 6

UID
175097
好友
4
蛮牛币
1277
威望
0
注册时间
2016-10-12
在线时间
381 小时
最后登录
2018-11-18
发表于 2018-11-5 09:03:48 | 显示全部楼层
这个可以 将每段动画的初始一帧 切出来 作为一个状态 ,切换时先切到一帧动画上 然后在切到每段动画上 这种方法针对于Animation 动画可以
[发帖际遇]: 菜鸟笨笨 在论坛发帖时没有注意,被小偷偷去了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1078/1500
排名
3334
昨日变化
13

3

主题

272

帖子

1078

积分

Rank: 6Rank: 6Rank: 6

UID
175097
好友
4
蛮牛币
1277
威望
0
注册时间
2016-10-12
在线时间
381 小时
最后登录
2018-11-18
发表于 2018-11-5 09:06:23 | 显示全部楼层
物体移动的话 做动画不如直接用DOTween 实现方便

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

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

我就是举个例子,实际动画并不是直线运动,是一个设备的操作动画。
[发帖际遇]: 爱情程序员 在网吧通宵,花了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1078/1500
排名
3334
昨日变化
13

3

主题

272

帖子

1078

积分

Rank: 6Rank: 6Rank: 6

UID
175097
好友
4
蛮牛币
1277
威望
0
注册时间
2016-10-12
在线时间
381 小时
最后登录
2018-11-18
发表于 2018-11-5 15:18:27 | 显示全部楼层
爱情程序员 发表于 2018-11-5 14:59
我就是举个例子,实际动画并不是直线运动,是一个设备的操作动画。

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

回复

使用道具 举报

2初来乍到
103/150
排名
20643
昨日变化
4

0

主题

25

帖子

103

积分

Rank: 2Rank: 2

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

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

回复

使用道具 举报

排名
13732
昨日变化
256

0

主题

10

帖子

93

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

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

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

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

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

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

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

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

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

回复

使用道具 举报

排名
13732
昨日变化
256

0

主题

10

帖子

93

积分

Rank: 2Rank: 2

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

可以试试
[发帖际遇]: hooyion 捡了钱没交公 蛮牛币 降了 2 . 幸运榜 / 衰神榜

回复

使用道具 举报

7日久生情
2788/5000
排名
531
昨日变化
3

29

主题

433

帖子

2788

积分

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

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

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

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表