//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); } }
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); }