示例#1
0
    public override void Enter()
    {
        boss4Pot.enemy.health.Resistance = DamageType.BASIC | DamageType.EXPLOSIVE | DamageType.FIRE | DamageType.ICE | DamageType.LIGHTNING | DamageType.EARTH | DamageType.TRUE;
        boss4Pot.StartFloating();

        boss4Pot.StartCoroutine(Move());
    }
示例#2
0
    IEnumerator Teleport()
    {
        boss.StopFloating();
        teleporting = true;
        Vector3 teleportLocation = Vector3.zero;
        bool    tooClose         = false;

        do
        {
            teleportLocation = Utility.RandomPointInBounds(boss.MovementBoundaries.bounds);
            tooClose         = false;
            for (int i = 0; i < projectiles.Length && !tooClose; i++)
            {
                //tooClose = (projectiles[i].transform.position - teleportLocation).sqrMagnitude < 16.0f;
                tooClose = (projectiles[i].transform.position - teleportLocation).sqrMagnitude < 4.0f;
            }
        } while (tooClose);
        Vector3 originalScale = boss.transform.localScale;
        float   shrinkTime    = 0.0f;

        while (boss.transform.localScale.sqrMagnitude != 0)
        {
            shrinkTime += Time.deltaTime;
            shrinkTime  = Mathf.Clamp(shrinkTime, 0.0f, 1.0f);
            boss.transform.localScale = originalScale - (originalScale * (shrinkTime / 1.0f));
            yield return(null);
        }
        boss.transform.position = teleportLocation;

        boss.transform.localScale = Vector3.zero;
        float growthTime = 0.0f;

        while (boss.transform.localScale.sqrMagnitude < originalScale.sqrMagnitude)
        {
            growthTime += Time.deltaTime;
            growthTime  = Mathf.Clamp(growthTime, 0.0f, 1.0f);
            boss.transform.localScale = originalScale * (growthTime / 1.0f);
            yield return(null);
        }
        boss.StartFloating();
        teleporting = false;
    }