Exemplo n.º 1
0
    //Boss
    public void DoBossDamage()
    {
        BossInfo bInfo      = GetComponentInParent <BossInfo>();
        float    randomSide = Random.Range(0, 2);

        Collider[] c = Physics.OverlapSphere(bInfo.actualRayStart, bInfo.attackRange * 2, bInfo.targetMask);
        for (int i = 0; i < c.Length; i++)
        {
            if (c[i].transform.tag == "Player")
            {
                PlayerMovement pMove = c[i].GetComponent <PlayerMovement>();
                if (GameManager.gameTime == 0)
                {
                    bInfo.orb.StopCoroutine(bInfo.orb.SizeIncrease());
                    bInfo.orb.StartCoroutine(bInfo.orb.SizeDecrease());
                    bInfo.agent.speed /= bInfo.speedMultiplier;
                    bInfo.reset        = true;
                    bInfo.drainChase   = false;
                    bInfo.curBossState = BossState.Return;
                    bInfo.orb.HoldDamage(bInfo.damage);
                    bInfo.orb.HoldUpforce(transform.up, bossUpForce);
                    if (randomSide == 0)
                    {
                        bInfo.orb.HoldForce(transform.right, bossForce);
                    }
                    else
                    {
                        bInfo.orb.HoldForce(-transform.right, bossForce);
                    }
                }
                else
                {
                    pMove.DoDamage(bInfo.damage);
                    pMove.AddForceToPlayer(transform.up, bossUpForce);
                    if (randomSide == 0)
                    {
                        pMove.AddForceToPlayer(transform.right, bossForce);
                    }
                    else
                    {
                        pMove.AddForceToPlayer(-transform.right, bossForce);
                    }
                    bInfo.CheckCharge();
                }
                pMove.attackHit = true;
                break;
            }
        }
        if (c.Length == 0)
        {
            bInfo.Invoke("HitStun", 0f);
        }
    }
Exemplo n.º 2
0
 public IEnumerator SizeDecrease()
 {
     ParticleSystem.ShapeModule    shape   = GetComponentInChildren <ParticleSystem>().shape;
     ParticleSystem.MainModule     main    = GetComponentInChildren <ParticleSystem>().main;
     ParticleSystem.EmissionModule emisson = GetComponentInChildren <ParticleSystem>().emission;
     GetComponentInChildren <OrbRotation>().invert = true;
     while (transform.localScale.x > 0)
     {
         if (GetComponentInChildren <ParticleSystem>())
         {
             main.startLifetimeMultiplier   -= 1 * decreaseSpeed * Time.deltaTime;
             emisson.rateOverTimeMultiplier -= 1 * decreaseSpeed * Time.deltaTime;
             shape.radius -= 1 * decreaseSpeed * Time.deltaTime;
         }
         transform.localScale -= new Vector3(1, 1, 1) * decreaseSpeed * Time.deltaTime;
         yield return(new WaitForSeconds(Time.deltaTime));
     }
     playerM.DoDamage(tempDam);
     playerM.AddForceToPlayer(tempUpDir, tempUpAmount);
     playerM.AddForceToPlayer(tempDir, tempAmount);
     GameManager.gameTime = 1;
     GameManager.instance.pillarMan.NextPylon();
     Destroy(gameObject);
 }