예제 #1
0
    // 瑙﹀彂(缁ф壙鑷猻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);
            }
        }
    }
예제 #2
0
    // 触发动作(触发条件调用,继承自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);
    }
예제 #3
0
    // 进入触发状态(继承自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>();
            }
        }
    }
예제 #4
0
    // 离开触发器(继承自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);
            }
        }
    }
예제 #5
0
    // 初始化(继承自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;
            }
        }
    }
예제 #6
0
    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>();
        }
    }