最近有个Laya+unity的项目,发现unity中制作的动画,导入到unity中,镜头乱飞,而且拖尾也有问题.
例如:下图
(unity中效果)
导入到Laya中显示如下,拖尾显示不出来.
还有镜头乱飞的问题,unity中显示正常,但是Laya中可能算法有问题,如果偏移角度从正到负,或者从负到正,例如,-1到1,算法可能是算了个一周,从-1算到-360然后再算到1,同理从1到-1也是如此,多次实验发现角度如果有正负差别,镜头会旋转一周,体验不好, 于是只能采用,恒定曲线做
这样可以瞬间切镜头,就避免了镜头乱飞的问题,不过如果需要缓慢的移动镜头,涉及到角度正负问题,可以拆分成两个动画制作.
LayaAir3D监听动画状态
参考了上面链接监听动画结束状态,在上一个动画结束后就立刻调用下一个动画,可以使两个动画无缝拼接
var anim = this.owner.getChildAt(0).getComponent(Laya.Animator);
var state = "die";
var layer: Laya.AnimatorControllerLayer = anim.getControllerLayer();
var dieState: Laya.AnimatorState = layer.getAnimatorState(state);
dieState.clip.islooping = false;//为true时不执行onStateExit
var dieStates: Laya.AnimatorStateScript = dieState.getScript(Laya.AnimatorStateScript);
if (dieStates == null) {
dieStates = dieState.addScript(Laya.AnimatorStateScript);
}
dieStates.onStateEnter = function () {
console.log(state, "enter.");
}
dieStates.onStateUpdate = function () {
console.log(state, "update.");
}
dieStates.onStateExit = function () {
console.log(state, "exit.");
}
anim.play(state);