示例#1
0
 /// <summary>
 /// 添加怪物数据
 /// </summary>
 /// <returns></returns>
 public Monsterdata Adddata()
 {
     Monstergroupdata = new Monsterdata();
     Monstergroupdata.MonsterPointdataList = new List <MonsterPointData>();
     Monstergroupdata.MonsterPointdataList = MonsterPointdataList;
     Monstergroupdata.EnterWaitTime        = EnterWaitTime;
     Monstergroupdata.MyPos   = this.transform.position;
     Monstergroupdata.MyAngle = this.transform.rotation;
     return(Monstergroupdata);
 }
 /// <summary>
 /// 开启出生怪物行为
 /// </summary>
 /// <param name="obj">怪物Obj</param>
 /// <param name="data">怪物数据</param>
 /// <param name="isLocal">是否本地加载</param>
 public void SetMonsterBirthState(GameObject obj, Monsterdata data, bool isLocal, int DynamicID = 0)
 {
     StoryAnimEditorContrler.GetInst().SetMonsterBirthState(obj, data, isLocal, DynamicID);
     StoryAnimEditorContrler.GetInst().GetMonsterObjList().Add(obj);
 }
 /// <summary>
 /// 开启出生怪物行为
 /// </summary>
 /// <param name="obj">怪物Obj</param>
 /// <param name="data">怪物数据</param>
 /// <param name="isLocal">是否本地加载</param>
 public void SetMonsterBirthState(GameObject obj, Monsterdata data, bool isLocal, int DynamicID = 0)
 {
     StartCoroutine(StartMonsterBirth(obj, data, isLocal, DynamicID));
 }
        //##############################################################################################################################
        //怪物出生模式
        private IEnumerator StartMonsterBirth(GameObject obj, Monsterdata data, bool isLocal, int DynamicID = 0)
        {
            yield return(new WaitForSeconds(data.EnterWaitTime));

            //TODO::怪物出场特效,这里临时这么写;
            isLocal = true;

            Animation anim = obj.GetComponent <Animation>();

            for (int i = 0; i < data.MonsterPointdataList.Count; ++i)
            {
                //选择动作播放循环播放动作
                switch (data.MonsterPointdataList[i].MonsterActiontype)
                {
                case MonsterActionType.Loop:
                    anim.wrapMode = WrapMode.Loop;
                    break;

                case MonsterActionType.Once:
                    anim.wrapMode = WrapMode.Once;
                    break;
                }
                if (data.MonsterPointdataList[i].ActionName != string.Empty)
                {
                    anim.CrossFade(data.MonsterPointdataList[i].ActionName, 0.2f);
                }
                //加载特效
                if (data.MonsterPointdataList[i].Effname != string.Empty)
                {
                    //不填的默认为特效位置为当前object的位置;
                    Vector3 effPos = data.MonsterPointdataList[i].Effpos.Equals(Vector3.zero) ? obj.transform.position : data.MonsterPointdataList[i].Effpos;

                    if (!isLocal)
                    {
                        //正常加载特效
                        GameObject objType = AssetLoader.Inst.GetAssetRes(data.MonsterPointdataList[i].Effname);
                        //GameObject eff = Instantiate(objType, data.MonsterPointdataList[i].Effpos, Quaternion.identity) as GameObject;
                        GameObject eff = Instantiate(objType, effPos, Quaternion.identity) as GameObject;
                        Destroy(eff, data.MonsterPointdataList[i].EffTime);
                    }
                    else
                    {
                        //本地加载特效
                        //GameObject eff = Instantiate(Resources.Load(data.MonsterPointdataList[i].Effname), data.MonsterPointdataList[i].Effpos, Quaternion.identity) as GameObject;
                        GameObject eff = Instantiate(Resources.Load(data.MonsterPointdataList[i].Effname), effPos, Quaternion.identity) as GameObject;
                        Destroy(eff, data.MonsterPointdataList[i].EffTime);
                    }
                }
                //播放音效
                if (data.MonsterPointdataList[i].Soundname != null || data.MonsterPointdataList[i].Soundname != string.Empty)
                {
                    string _audio = data.MonsterPointdataList[i].Soundname;
                    if (!isLocal)
                    {
                        //正常播放音效
                        AudioControler.Inst.PlaySound(_audio);
                    }
                    else
                    {
                        //...
                    }
                }
                //选择行为模式
                switch (data.MonsterPointdataList[i].Entertype)
                {
                case MonsterEnterType.StayIdle:
                    obj.transform.DOPause();
                    break;

                case MonsterEnterType.RunAround:
                    if (data.MonsterPointdataList[i].IsMovetoFirstPoint == true)
                    {
                        obj.transform.position = data.MonsterPointdataList[i].RunAroundPoints[0];
                    }
                    RunAroundUpdate(obj, data.MonsterPointdataList[i], data.MonsterPointdataList[i].RunAroundPoints);
                    break;

                case MonsterEnterType.Bench:
                    SceneObjectManager.GetInstance().SceneObjectAddMonster(obj, CurrentFightCount, DynamicID);
                    // For Blood Create(by zcd)
                    GameEventDispatcher.Inst.dispatchEvent(GameEventID.F_OnSupportMonstorBlood);
                    break;

                case MonsterEnterType.StayRun:
                    //..
                    break;

                case MonsterEnterType.DesMySelf:
                    Dic_GameobjList.Remove(obj);
                    Destroy(obj);
                    break;

                default:
                    Debug.Log("无行为");
                    break;
                }
                //等待当前行为时间
                yield return(new WaitForSeconds(data.MonsterPointdataList[i].ActionTime));
            }
        }