コード例 #1
0
    IEnumerator DungeonFloor1Door()
    {
        EventManager.TriggerEvent("InCombat");
        EventManager.TriggerEvent("StopMoving");

        Vector3 BoyNewPos  = new Vector3(DungeonDoorFloor1Boy.transform.position.x, boyPlayer.transform.position.y, DungeonDoorFloor1Boy.transform.position.z);
        Vector3 GirlNewPos = new Vector3(DungeonDoorFloor1Girl.transform.position.x, girlPlayer.transform.position.y, DungeonDoorFloor1Girl.transform.position.z);

        boyPlayer.GetComponent <NavMeshAgent>().SetDestination(DungeonDoorFloor1Boy.transform.position);
        girlPlayer.GetComponent <NavMeshAgent>().SetDestination(DungeonDoorFloor1Girl.transform.position);

        while (boyPlayer.transform.position != BoyNewPos && girlPlayer.transform.position != GirlNewPos)
        {
            yield return(null);
        }

        yield return(new WaitForSeconds(.5f));

        boyPlayer.GetComponent <BetterPlayer_Movement>().SetCurTarget(this.gameObject);
        Debug.Log(currentHealth);
        yield return(new WaitUntil(() => currentHealth <= 0));

        Debug.Log("It did work");
        currentHealth = 0;

        if (_DestroyEffect)
        {
            ScreenFader.PlayLaserDevastation();
            yield return(new WaitForSeconds(.5f));

            GameObject sfx = Instantiate(_DestroyEffect, transform.position, Quaternion.identity);
            Destroy(sfx, 5f);
        }

        SpriteRenderer[] DoorSprite = Door.GetComponentsInChildren <SpriteRenderer>();
        for (int i = 0; i < DoorSprite.Length; i++)
        {
            DoorSprite[i].enabled = false;
        }

        Destroy(Door);

        EventManager.TriggerEvent("NotInCombat");
    }
コード例 #2
0
    private IEnumerator CastUltimateAttack()
    {
        StopAttacking = true;
        Ultimate      = true;

        i = 2;

        m_warningCastTime = 0;
        _CastSpellGameobject.SetActive(true);
        _SpellCasttimer.enabled = true;
        _SpellCasttimer.text    = System.Math.Round((float)(_TimeWarningForSpell[i]), 2).ToString();
        m_warningCastTimeBool   = true;

        UltimateGathering = Instantiate(_AttackAnimations[3], transform);

        Warning = Instantiate(_AttackWarningPrefabs[2], transform.position, Quaternion.identity);

        yield return(new WaitForSeconds(_TimeWarningForSpell[i] - 5f));

        CameraShake cameraShake = GameObject.FindWithTag("CameraHolder").GetComponent <CameraShake>();

        StartCoroutine(cameraShake.LaserShake(8f, .15f));

        yield return(new WaitForSeconds(5f));

        m_warningCastTimeBool   = false;
        _SpellCasttimer.enabled = false;
        _CastSpellGameobject.SetActive(false);

        Destroy(UltimateGathering);

        UltimateAttackGameObject = Instantiate(_AttackAnimations[4], transform);

        //Start the Attack


        yield return(new WaitForSeconds(1f));

        ScreenFader.PlayLaserDevastation();

        yield return(new WaitForSeconds(1.5f));


        foreach (Transform player in _Target)
        {
            MessageHandler msgHandler = player.GetComponent <MessageHandler>();
            DamageData     dmgData    = new DamageData();
            dmgData.damage = _AttackDamage[3];
            if (msgHandler)
            {
                msgHandler.GiveMessage(MessageTypes.DAMAGED, this.gameObject, dmgData);
                GameObject go     = player.GetComponent <HealthController>().Sprite;
                Canvas[]   canvas = go.GetComponentsInChildren <Canvas>();

                for (int i = 0; i < canvas.Length; i++)
                {
                    if (canvas[i].GetComponentInChildren <DamageDisplayScript>())
                    {
                        canvas[i].GetComponentInChildren <DamageDisplayScript>().GetDamageText(Color.red, _AttackDamage[3]);
                    }
                }
            }
        }
        Destroy(UltimateAttackGameObject);
        Destroy(Warning);

        m_ultimateAttackTimer = 0;
        Ultimate      = false;
        StopAttacking = false;
    }