关联的图片我先放上来啊:
DirectorManager,首先在开始的时候直接给所添加的物件附上一个PlayableDirector:
1
知识兔td> | [RequireComponent(typeof(PlayableDirector))]
知识兔td> |
先解释一下,这个Scrpit的意义:因为在播放动画的过程中,我需要一个管理导演的脚本,这个导演有自己的剧本,
他有可能要演出正面刺,背面刺,开宝箱,和Boss决战时最后一刀重击致命的一刀,这就是此代码的目的。
首先我命名的是PlayableDirector ,然后定义了正面刺的剧本(此剧本)从Unity中直接拖入就行了:
1 2 3 4 5
知识兔td> | public PlayableDirector pd; public TimelineAsset frontStab;
public ActorManager Attacker; public ActorManager Victim; //上述两行是将Attacker 和 Victim 加入
知识兔td> |
然后在Start里面去获取这个PlayerableDirector:
1 2 3
知识兔td> | pd = GetComponent<PlayableDirector>(); pd.playOnAwake = false; //这一行是为了把PlayOnWake设置为false pd.playableAsset = Instantiate(frontStab);
知识兔td> |
frontStab轨道如下:
去用foreach去读frontStab的每一轨的东西,然后去判断每一个的名字:
1 2 3 4 5 6 7 8 9
知识兔td> | if (track.streamName == "attacker Animation") { pd.SetGenericBinding(track.sourceObject,am.ac.anim); }
if (track.streamName == "victim Animation") { pd.SetGenericBinding(track.sourceObject,am.ac.anim); }
知识兔td> |
在Update中去看是哪个Layer来播放这个动画(下方是仅作为测试所用):
1 2 3 4
知识兔td> | if (Input.GetKey(KeyCode.H)&& gameObject.layer==LayerMask.NameToLayer("Player")) { pd.Play(); }
知识兔td> |
去检测是Player层如果是的话就会播放(在此也可以调节为Enemy,那么就会是黑骑士插我们)。
今天就到这里吧,背了好几个list的单词,我得去消化消化了。再见各位:
原文:大专栏 DirectorManager设置