Exemplo n.º 1
0
        public override void CreateDeafaultModel()
        {
            AvatarModelData data = AvatarModelData.dataMap[999];

            LoggerHelper.Debug("monster create:" + ID + ",name:" + data.prefabName);
            GameObject go = AssetCacheMgr.GetLocalInstance(data.prefabName) as GameObject;

            Transform            = go.transform;
            Transform.localScale = scale;
            Transform.tag        = "Monster";
            motor    = go.AddComponent <MogoMotorServer>();
            animator = go.GetComponent <Animator>();
            ActorDummy ap = go.AddComponent <ActorDummy>();

            ap.theEntity = this;
            this.Actor   = ap;
            UpdatePosition();
            base.CreateModel();
        }
Exemplo n.º 2
0
        private void AttachBuildingModel()
        {
            GearParent[] gears = (GearParent[])GameObject.FindObjectsOfType(typeof(GearParent));
            foreach (GearParent gear in gears)
            {
                if (gear.ID == (uint)clientTrapId)
                {
                    Transform     = gear.transform;
                    GameObject    = gear.gameObject;
                    Transform.tag = "Monster";

                    LoggerHelper.Debug("CreateBuildingModel Position: " + Transform.position);

                    // motor = GameObject.AddComponent<MogoMotorServer>();
                    animator = GameObject.GetComponent <Animator>();

                    ActorDummy ap = GameObject.GetComponent <ActorDummy>();
                    if (ap == null)
                    {
                        ap = GameObject.AddComponent <ActorDummy>();
                    }

                    ap.theEntity = this;
                    this.Actor   = ap;

                    golem   = gear.gameObject.GetComponentInChildren <GolemAnimation>();
                    golemFx = gear.gameObject.GetComponentInChildren <GolemFx>();

                    // golem = gear as GolemAnimation;

                    golem.Activate();
                    if (golemFx != null)
                    {
                        golemFx.Activate();
                    }

                    AddBillBoard();

                    // base.CreateModel();
                }
            }
        }
Exemplo n.º 3
0
        public override void CreateActualModel()
        {
            AvatarModelData data = AvatarModelData.dataMap.GetValueOrDefault(m_monsterData.model, null);

            if (data == null)
            {
                LoggerHelper.Error("Model not found: " + m_monsterData.model);
                return;
            }
            LoggerHelper.Debug("monster create:" + ID + ",name:" + data.prefabName);
            SubAssetCacheMgr.GetCharacterInstance(data.prefabName,
                                                  (prefab, guid, gameObject) =>
            {
                if (this.Actor)
                {
                    this.Actor.Release();
                }
                if (Transform)
                {
                    AssetCacheMgr.ReleaseLocalInstance(Transform.gameObject);
                }
                GameObject = (gameObject as GameObject);

                Transform            = GameObject.transform;
                Transform.localScale = scale;
                if (data.scale > 0)
                {
                    Transform.localScale = new Vector3(data.scale, data.scale, data.scale);
                }
                Transform.tag = "Monster";
                Transform.gameObject.layer = 11;
                sfxHandler = GameObject.AddComponent <SfxHandler>();
                motor      = GameObject.AddComponent <MogoMotorServer>();

                audioSource             = GameObject.AddComponent <AudioSource>();
                audioSource.rolloffMode = AudioRolloffMode.Custom;

                CharacterController controller = GameObject.GetComponent <CharacterController>();
                controller.radius = m_monsterData.scaleRadius / 100f;
                controller.height = EntityColiderHeight;
                float centerY     = (controller.height > controller.radius * 2) ? (controller.height * 0.5f) : (controller.radius);
                controller.center = new Vector3(0, centerY, 0);

                animator      = GameObject.GetComponent <Animator>();
                ActorDummy ap = GameObject.AddComponent <ActorDummy>();
                ap.theEntity  = this;
                this.Actor    = ap;
                UpdatePosition();
                if (data.originalRotation != null && data.originalRotation.Count == 3)
                {
                    Transform.eulerAngles = new Vector3(data.originalRotation[0], data.originalRotation[1], data.originalRotation[2]);
                }
                else
                {
                    if (MogoWorld.thePlayer != null && MogoWorld.thePlayer.Transform != null)
                    {
                        Vector3 targetToLookAt = MogoWorld.thePlayer.Transform.position;
                        Transform.LookAt(new Vector3(targetToLookAt.x, Transform.position.y, targetToLookAt.z));
                    }
                }
                if (NotTurn())
                {
                    motor.canTurn = false;
                }
                hp = (uint)m_monsterData.hpBase;
                #region Shader
                if (ShaderData.dataMap.ContainsKey(m_monsterData.shader) &&
                    GameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true) != null)
                {
                    MogoFXManager.Instance.SetObjShader(GameObject, ShaderData.dataMap[m_monsterData.shader].name, ShaderData.dataMap[m_monsterData.shader].color);
                    MogoFXManager.Instance.AlphaFadeIn(GameObject, fadeInTime);
                }
                #endregion

                base.CreateModel();

                MogoFXManager.Instance.AddEnemyInScreen(Transform.gameObject, ID);

                motor.SetAngularSpeed(240f);
                motor.acceleration = 2f;

                //GameObject.AddComponent<MogoObjOpt>().ObjType = MogoObjType.Dummy;
                //if (GameObject.GetComponent<Animation>() != null)
                //{
                //    GameObject.GetComponent<Animation>().enabled = false;
                //} //鸟人动作带位移
                try
                {
                    if (m_monsterData != null && m_monsterData.bornFx != null)
                    {
                        foreach (var item in m_monsterData.bornFx)
                        {
                            sfxHandler.HandleFx(item);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LoggerHelper.Except(ex);
                }

                //开始执行出生流程
                m_bModelBuilded = true;
                m_aiRoot        = AIContainer.container.Get((uint)m_monsterData.aiId);

                uint waitTime = (uint)m_monsterData.bornTime;
                if (waitTime <= 1)    //容错
                {
                    waitTime = 3000;
                }
                if (blackBoard.timeoutId > 0)
                {
                    TimerHeap.DelTimer(blackBoard.timeoutId);
                }

                //LoggerHelper.Error("RebornAnimationDelay" + waitTime);
                m_currentSee = m_monsterData.see;
                blackBoard.ChangeState(Mogo.AI.AIState.THINK_STATE);
                blackBoard.timeoutId = TimerHeap.AddTimer(waitTime, 0, RebornAnimationDelay);
                TimerHeap.AddTimer(waitTime, 0, BornedHandler);
                Actor.ActChangeHandle = ActionChange;
            }
                                                  );
        }