//创建物体 private void OnCreatStaticObj(StoryAnimdate data) { if (data.ObjName == string.Empty) { return; } GameObject temp; if (IsLocal) { temp = Instantiate(Resources.Load(data.ObjName), data.ObjPos, Quaternion.Euler(data.ObjAngle)) as GameObject; temp.AddComponent <AnimationEventControler>(); // temp.transform.position = data.ObjPos; // temp.transform.eulerAngles = data.ObjAngle; Dic_GameobjList.Add(temp); SetMonsterBirthState(temp, data.MonsterData, true); StartCascadeEvent(data); } else { GameObject objType = AssetLoader.Inst.GetAssetRes(data.ObjName); temp = Instantiate(objType, data.ObjPos, Quaternion.Euler(data.ObjAngle)) as GameObject; temp.AddComponent <AnimationEventControler>(); Dic_GameobjList.Add(temp); SetMonsterBirthState(temp, data.MonsterData, false); StartCascadeEvent(data); } }
//开启事件 private IEnumerator StartEvent(StoryAnimdate data) { yield return(new WaitForSeconds(data.EventTime)); switch (data.StoryAnimEventtype) { case StoryAnimEventType.CreatStaticObj: OnCreatStaticObj(data); break; case StoryAnimEventType.GetDynamicObj: OnGetDynamicObj(data); break; case StoryAnimEventType.PlayCamAnim: OnPlayCamAnim(data); break; case StoryAnimEventType.PlayCamAnimWait: StartCoroutine(OnPlayCamAnimWait(data)); break; case StoryAnimEventType.SetEnterFightState: FightEditorContrler.GetInstantiate().HeroPathFightEnterEnd(); GameEventDispatcher.Inst.dispatchEvent(GameEventID.SE_EnterFightState, CurrentFightCount); break; case StoryAnimEventType.SetEnterFightInstantiateHero: FightControler.Inst.SetFightState(FightState.FightInstantiateHero); break; } }
//播放摄像机轨迹动画(DEMO) private IEnumerator OnPlayCamAnimWait(StoryAnimdate data) { yield return(new WaitForSeconds(CamToTagTime)); StoryCamAnim.Play(data.CamAnimName); //StoryCamAnim[data.CamAnimName].speed = 0.5f; StartCascadeEvent(data); }
//开启串联事件 private void StartCascadeEvent(StoryAnimdate data) { if (data.CascadeEventID == string.Empty) { return; } string[] IDs = data.CascadeEventID.Split('#'); for (int i = 0; i < IDs.Length; ++i) { StartCoroutine(StartEvent(Dic_StoryAnimDate[int.Parse(IDs[i])])); } }
//获取当前战斗怪物信息(比较特殊只限BOSS) private void OnGetDynamicObj(StoryAnimdate data) { GameObject temp; if (SceneObjectManager.GetInstance() == null) { temp = Instantiate(Resources.Load(data.ObjDynamicName), data.ObjDynamicPos, Quaternion.Euler(data.ObjDynamicAngle)) as GameObject; // temp.transform.position = data.ObjDynamicPos; // temp.transform.eulerAngles = data.ObjDynamicAngle; } else { temp = MonsterObjList[data.ObjDynamicID - 1]; } SetMonsterBirthState(temp, data.MonsterData, false); StartCascadeEvent(data); }
//播放摄像机轨迹动画 private void OnPlayCamAnim(StoryAnimdate data) { StoryCamAnim.Play(data.CamAnimName); //StoryCamAnim[data.CamAnimName].speed = 1f; StartCascadeEvent(data); }