[0]动作克隆问题,AB两个怪物用同一个模型,A的动作会影响B。

RT。例如这套模型有 走路 待机 攻击三个动作状态.创建状态的时候是
let state: AnimatorState = new AnimatorState();
state.name = key;// walk/idle/attack
state.clipStart = clipStart;
state.clipEnd = clipEnd;
state.clip = this._animator.getDefaultState().clip;
this._animator.addState(state);
每个状态的clip都是 this._animator.getDefaultState().clip 这个对象。
播放动作时,是根据动作类型设置是否循环。
this._animator.play(this._action);
this._animator.getDefaultState().clip.islooping = this._action=="walk" || this._action=="idle"
现在的问题是,当A怪物播放攻击动作时 B怪物如果正在走路或者待机 动作会停止,
定位到是由于B怪物的clip.islooping 变成是false了。
请问克隆的时候 是不是所有的状态都是用了同一个clip对象呢?
我创建状态的方式是正确的吗?
state.clip = this._animator.getDefaultState().clip;
创建状态的clip这种方式是不是欠妥呢?
已邀请:

Laya_Fred

赞同来自:

您好,我这里AB两个怪物使用同一个模型,B由A克隆出来,在切换A的动作状态后,B的动作状态并没有停止,您方便给个示例来看下问题嘛?

1584350865用户

赞同来自:

您好附件在这里,麻烦您了,在peopmanager.ts里有注释。

Laya_Fred

赞同来自:

您好,这个目前是因为在右侧的克隆出来的猴子与左侧的猴子使用的是同一个clip,导致在左侧的猴子播放"hello"设置islooping为false后,右侧猴子播放完"normal"状态后就停止了。对clip的这种处理方式我们考虑下比较好的方法。

要回复问题请先

商务合作
商务合作