// 瑙﹀彂(缁ф壙鑷猻dTriggerReceiver)aa public override void OnTriggerHitted(GameObject kObject, int[] kParam) { base.OnTriggerHitted(kObject, kParam); // 鏉姝昏嚜宸盿a if (kParam[3] == 1) { SetCurrentHP(-1); AddHP(0); return; } if (mIsSummoned || (GetCurrentHP() <= 0)) { return; } mIsSummoned = true; MonsterSummoned(); sdMovieScene movieScene = gameObject.GetComponent <sdMovieScene>(); if (movieScene != null) { sdLevelArea area = transform.parent.gameObject.GetComponent <sdLevelArea>(); if (area != null) { movieScene.SetTarget(gameObject, area); } } }
// 触发动作(触发条件调用,继承自sdBehaviourAction)aa public override void DoSyncAction() { if (!BundleGlobal.IsMobile()) { //Debug.Log("sdSummonBehaviourAction::DoSyncAction"); } if (mSummonLevelArea == null) { GameObject kSummonLevelAreaObject = GameObject.Find(mLevelAreaName); if (kSummonLevelAreaObject) { mSummonLevelArea = kSummonLevelAreaObject.GetComponent <sdLevelArea>(); } if (mSummonLevelArea == null) { return; } } sdSummonBehaviourAction kDelaySummonBehaviourAction = this.Clone() as sdSummonBehaviourAction; kDelaySummonBehaviourAction.TimeStamp = Time.time; kDelaySummonBehaviourAction.mSummonLevelArea = this.mSummonLevelArea; mBehaviourAdvancedState.AddBehaviourActionToDelayList(kDelaySummonBehaviourAction); }
// 进入触发状态(继承自sdBehaviourState)aa public override void DoEnterState() { if (mIsInState != true) { mIsInState = true; mCurrentCount = mCount; mCurrentDelayTime = mDelayTime; mSummonLevelArea = null; GameObject kSummonLevelAreaObject = GameObject.Find(mLevelAreaName); if (kSummonLevelAreaObject) { mSummonLevelArea = kSummonLevelAreaObject.GetComponent <sdLevelArea>(); } } }
// 离开触发器(继承自sdBaseTrigger)aa protected override void WhenLeaveTrigger(GameObject kObject, int[] kParam) { base.WhenLeaveTrigger(kObject, kParam); if (mParNode != null) { sdLevelArea kArea = mParNode.GetComponent <sdLevelArea>(); if (kArea != null) { kArea.OnSubAreaCleared(this.gameObject); } } for (int i = 0; i < leaveReceivers.Length; i++) { if (leaveReceivers[i] != null) { leaveReceivers[i].OnTriggerHitted(this.gameObject, iLeaveParams[i].v); } } }
// 初始化(继承自MonoBehaviour)aa protected override void Start() { if (this.transform.childCount > 0) { for (int i = 0; i < this.transform.childCount; i++) { GameObject kObject = this.transform.GetChild(i).gameObject; sdGameMonster kMonster = kObject.GetComponent <sdGameMonster>(); if (kMonster != null) { kMonster.NotifyKilled += NotifyMonsterKilled; kMonster.NotifyHurt += NotifyMonsterHurt; kMonster.NotifyChangeTarget += NotifyMonsterFindFirstTarget; mMonsterKilledList.Add(kObject); continue; } sdLevelArea kArea = kObject.GetComponent <sdLevelArea>(); if (kArea != null) { mSubNodeClearedList.Add(kObject); continue; } } } if (this.transform.parent != null) { sdLevelArea kArea = this.transform.parent.gameObject.GetComponent <sdLevelArea>(); if (kArea != null) { mParNode = this.transform.parent.gameObject; } } }
public void SetTarget(GameObject obj, sdLevelArea area) { sdUICharacter.Instance.bBossMovie = true; m_StartTime = System.DateTime.Now.Ticks / 10000000L; mBoss = obj; bossSaveRotate = mBoss.transform.rotation; levelArea = area; mMainCamera = sdGameLevel.instance.mainCamera.GetComponent <Camera>(); cameraSavePos = mMainCamera.gameObject.transform.position; cameraSaveRotate = mMainCamera.gameObject.transform.rotation; mUICamera = sdGameLevel.instance.UICamera; SetTargetEffectVisible(false); sdGameLevel.instance.SetFingerObjectActive(false); HeaderProto.ECreatureActionState[] state = new HeaderProto.ECreatureActionState[2]; state[0] = HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_IDLE; state[1] = HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_LIMIT_SKILL; levelArea.SetMonsterStatus(state, true); sdActorInterface activePet = sdGameLevel.instance.mainChar.Retainer; for (int i = 0; i < state.Length; i++) { if (activePet != null) { activePet.AddDebuffState(state[i]); } sdGameLevel.instance.mainChar.AddDebuffState(state[i]); } if (activePet != null && activePet.actorType == ActorType.AT_Pet) { ((sdGameMonster)activePet).DeactiveHPUI(); } ResLoadParams param = new ResLoadParams(); sdResourceMgr.Instance.LoadResource("UI/$Movie/bossdialogue.prefab", LoadBossDialogue, param); //榛戝睆杩涘叆aa Quaternion cameraRotate = mMainCamera.gameObject.transform.rotation; cameraRotate = cameraRotate * Quaternion.AngleAxis(180.0f, new Vector3(0, 1, 0)); Vector3 direction = cameraRotate * Vector3.forward; direction.y = 0.0f; direction.Normalize(); Quaternion bossRotate = Quaternion.identity; if (direction.z < -0.9999f) { bossRotate = Quaternion.AngleAxis(180.0f, new Vector3(0, 1, 0)); } else { bossRotate = Quaternion.FromToRotation(Vector3.forward, direction); } mBoss.transform.rotation = bossRotate; sdGameLevel.instance.mainCamera.MainCharFollow = false; if (mbornAnimNext != null && mbornAnimNext.Length > 0) { bPlayShowAnimation = true; gameMonster = mBoss.GetComponent <sdGameMonster>(); } }