Open finscn opened 2 months ago
进一步研究了下 , 问题是这样的.
当 trackEntry.timeScale = 负数 时, 动画总是从 trackEntry.animationStart 和 trackEntry.animationEnd 中, 数值较小的那个开始播放, 一直倒放到0 .
也就是说 下面两段代码:
trackEntry.animationStart = 0.3
trackEntry.animationEnd = 0.5
trackEntry.timeScale = -1
和
trackEntry.animationStart = 0.5
trackEntry.animationEnd = 0.3
trackEntry.timeScale = -1
实际播放效果是一样的: 从 0.3 开始 倒放到 0.
另外 先设置 trackEntry.timeScale 后设置 animationStart/animationEnd 对结果没影响.
@minggo 这个100% 是bug . 求确认
关于倒放, spine 官方好像有个 专门的api : trackEntry .setReverse/getReverse , 但是cocos里没有暴路出来. 不知道如果暴露了 用这个api是不是可以
https://github.com/EsotericSoftware/spine-runtimes/blob/3.8/spine-cpp/spine-cpp/src/spine/AnimationState.cpp 看了官方的3.8版本,没有支持 trackEntry .setReverse/getReverse ;官方在最新版本4.2是有支持,这个可能需要升级spine版本才能提供对应功能
官方文档说timeScale不能小于0 https://zh.esotericsoftware.com/spine-api-reference#TrackEntry-timeScale
若需要支持倒放,目前看应该需要升级spine
官方文档说timeScale不能小于0 https://zh.esotericsoftware.com/spine-api-reference#TrackEntry-timeScale
若需要支持倒放,目前看应该需要升级spine
那cocos是否有计划升级spine 呢? spine 4.x 都出来三年多了.
竞争对手 LayaAir 目前同时 支持 3.7,3.8,4.0,4.1版本.
嗯嗯,我们研究一下。
Cocos Creator version
3.8.3
System information
all
Issue description
通过 timeScale = 负数 的方式来实现动画的倒放. 正常情况下 是ok的.
但是 当通过 trackEntry.animationStart 和 trackEntry.animationEnd 来指定播放区间时. 倒放会无视 这个播放区间, 直接倒着播放到 动画的第一帧.
Relevant error log output
No response
Steps to reproduce
如上所述
Minimal reproduction project
No response