/// <summary> /// 收到服务器消息,同步其他玩家建筑位置 /// </summary> /// <param name="param"></param> private void OnSendBuildPosition_bcst(object param) { var handle = param as mmopb.sendBuildPosition_bcst; string enemyName = DataMgr.Instance.PrefebsDic[handle.buildType]; if (handle.roleId == PlayerID) { return; } newBuild = (GameObject)Resources.Load("Prefabs/" + enemyName + "_Build"); Quaternion quaternion = new Quaternion(handle.xQuternion, handle.yQuternion, handle.zQuternion, handle.wQuternion); BuildCtrl newBuildCtrl = Instantiate(newBuild, new Vector3(handle.x, handle.y, handle.z), quaternion).AddComponent <BuildCtrl>(); GameObject particle = Resources.Load("Prefabs/MagicZoneGreen") as GameObject; GameObject newParticle = Instantiate(particle, newBuildCtrl.gameObject.transform); newParticle.SetActive(false); lock (lockObject) { if (Camp == Camp.Dark) { DataMgr.Instance.BrightBuildDic.Add(DataMgr.SoldierBuildId, newBuildCtrl); } else { DataMgr.Instance.DarkBuildDic.Add(DataMgr.SoldierBuildId, newBuildCtrl); } newBuildCtrl.Init(DataMgr.SoldierBuildId++, handle.roleId, Camp == Camp.Dark ? Camp.Bright : Camp.Dark, quaternion, enemyName); } }
/// <summary> /// 根据建筑物名称选择相应的配乐 /// </summary> /// <param name="buildCtrl"></param> public void SelectBuildSound(BuildCtrl buildCtrl) { switch (buildCtrl.SoldierName) { case "Orc_Assassin": audio.clip = Orc_Assassin; audio.Play(); break; case "Orc_Infantry": audio.clip = Orc_Infantry; audio.Play(); break; case "Orc_Magic": audio.clip = Orc_Magic; audio.Play(); break; case "Orc_Scout": audio.clip = Orc_Scout; audio.Play(); break; case "Orc_Swordsman": audio.clip = Orc_Swordsman; audio.Play(); break; case "Terren_Cavalry": audio.clip = Terren_Cavalry; audio.Play(); break; case "Terren_Spear": audio.clip = Terren_Spear; audio.Play(); break; case "Terren_Infantry": audio.clip = Terren_Infantry; audio.Play(); break; case "Terren_Worker": audio.clip = Terren_Worker; audio.Play(); break; case "Terren_Archer": audio.clip = Terren_Archer; audio.Play(); break; default: break; } }
//没帧更新 void Update() { /****************************技能*******************************/ ///实时根据技能标记执行相应操作 UseSkill(); //点击左键(非按钮) if (Input.GetMouseButtonDown(0)) { /****************************选中了卡片,建造******************************/ if (LocalUser.Instance.CardStatus != SoldierEnum.None) { BuildingConstruction(); } /***************************未选中卡牌******************************/ else { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit[] array = Physics.RaycastAll(ray, Mathf.Infinity, 1 << (LayerMask.NameToLayer("Build"))); //如果选中了建筑物 if (array.Length > 0) { if (PlayerID == array[0].collider.gameObject.GetComponent <BuildCtrl>().PlayerID) { //关粒子特效 TurnDownLastBuildParticle(); //选中建筑音效 BuildCtrl buildCtrl = array[0].collider.gameObject.GetComponent <BuildCtrl>(); SelectBuildSound(buildCtrl); //打开选中建筑的粒子特效 GameObject particle = array[0].collider.gameObject.transform.Find("MagicZoneGreen(Clone)").gameObject; particle.SetActive(true); LightBuildID = array[0].collider.gameObject.GetComponent <BuildCtrl>().BuildID; LocalUser.Instance.SelectBuildId = array[0].collider.gameObject.GetComponent <BuildCtrl>().BuildID; } } else { //关粒子特效 TurnDownLastBuildParticle(); } } } }
//初始化建筑 void InitBuild() { //加载模型和材质贴图的预制体 soldierName = DataMgr.Instance.PrefebsDic[(int)LocalUser.Instance.CardStatus]; newBuild = (GameObject)Resources.Load("Prefabs/" + soldierName + "_Build"); BuildCtrl newBuildCtrl = Instantiate(newBuild, BuildPos, StartRotate).AddComponent <BuildCtrl>(); GameObject particle = Resources.Load("Prefabs/MagicZoneGreen") as GameObject; GameObject newParticle = Instantiate(particle, newBuildCtrl.gameObject.transform); newParticle.SetActive(false); lock (lockObject) { if (Camp == Camp.Bright) { DataMgr.Instance.BrightBuildDic.Add(DataMgr.SoldierBuildId, newBuildCtrl); } else { DataMgr.Instance.DarkBuildDic.Add(DataMgr.SoldierBuildId, newBuildCtrl); } newBuildCtrl.Init(DataMgr.SoldierBuildId++, PlayerID, Camp, StartRotate, soldierName); } }