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(); }
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(); } } }
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; } ); }