예제 #1
0
        public bool Init(ObjSnare_Init_Data initData)
        {
            if (null == m_ObjTransform)
            {
                m_ObjTransform = transform;
            }

            //服务器发过来的信息
            ServerID  = initData.m_ServerID;
            SnareId   = initData.m_SnareID;
            OwerobjID = initData.m_OwnerObjId;
            OwnerGuid = initData.m_OwerGuid;
            m_ObjTransform.position = ActiveScene.GetTerrainPosition(new Vector3(initData.m_fX, 0, initData.m_fZ));
            Obj_Character ownerCharacter = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(OwerobjID);

            //修正陷阱的高度和陷阱释放者一样
            if (ownerCharacter != null)
            {
                Vector3 newPosVector3 = m_ObjTransform.position;
                newPosVector3.y         = ownerCharacter.ObjTransform.position.y;
                m_ObjTransform.position = newPosVector3;
            }

            //初始化特效
            if (ObjEffectController == null)
            {
                ObjEffectController = gameObject.AddComponent <ObjEffectBehaviourController>();
            }

            Tab_SnareObjInfo SnareInfo = TableManager.GetSnareObjInfoByID(SnareId, 0);

            if (SnareInfo != null)
            {
                //播放生存期特效
                for (int i = 0; i < SnareInfo.getAliveEffectIdCount(); i++)
                {
                    int AliveEffectId = SnareInfo.GetAliveEffectIdbyIndex(i);
                    if (AliveEffectId != -1 && ObjEffectController != null)
                    {
                        PlayEffect(AliveEffectId);
                    }
                }
                //播放生存期音效
                for (int i = 0; i < SnareInfo.getAliveSoundIdCount(); i++)
                {
                    int AliveSoundId = SnareInfo.GetAliveSoundIdbyIndex(i);
                    if (AliveSoundId != -1)
                    {
                        GameManager.gameManager.SoundManager.PlaySoundEffect(AliveSoundId);
                    }
                }
            }
            return(true);
        }
예제 #2
0
        /// <summary>
        /// 创建陷阱
        /// </summary>
        /// <param name="nCharModelID"></param>
        /// <param name="initData"></param>
        public static void CreateModelSnareObj(ObjSnare_Init_Data initData)
        {
            if (null == initData)
            {
                return;
            }

            //根据RoleBase的ID获得路径
            Tab_SnareObjInfo SnareObjInfo = TableManager.GetSnareObjInfoByID(initData.m_SnareID, 0);

            if (null == SnareObjInfo)
            {
                return;
            }
            int nCharModelID = SnareObjInfo.CharModelId;

            Tab_CharModel charModel = TableManager.GetCharModelByID(nCharModelID, 0);

            if (charModel == null)
            {
                LogModule.WarningLog("can not find char model id in table :{0}", nCharModelID);
                return;
            }
            GameObject SnareObj = ResourceManager.InstantiateResource("Prefab/Model/SnareRoot", initData.m_ServerID.ToString()) as GameObject;

            if (null != SnareObj)
            {
                //加载逻辑体,同时异步加载渲染体
                Obj_Snare objSnare = SnareObj.AddComponent <Obj_Snare>();;

                if (objSnare.Init(initData))
                {
                    objSnare.CanLogic = true;
                    Singleton <ObjManager> .Instance.AddPoolObj(objSnare.ServerID.ToString(), objSnare);
                }
                //ReloadModel(SnareObj, charModel.ResPath, AsycSnareObjOver, initData);
                LoadModelToRoot(nCharModelID, EResourceType.CharacterModel, LoadModelComplete, SnareObj, charModel, null);
            }
        }