Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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;
            }
        }
Example #3
0
        //没帧更新
        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();
                    }
                }
            }
        }
Example #4
0
        //初始化建筑
        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);
            }
        }