public void explode() { if (!Live) { return; } Live = false; ParticleExplosion.Play(); Remove(); }
//public ParticleSystem ImpactParticles; public void explode() { if (!Live) { return; } Live = false; ParticleExplosion.Play(true); if (Astronaut.AggressionLevel > 0) { VoidField vf = GameObject.Instantiate <VoidField>(VoidFieldPrefab, this.transform.position, VoidFieldPrefab.transform.rotation); vf.Duration = (2f + (.5f * Astronaut.AggressionLevel)); vf.ForceFactor = (1f + (.2f * Astronaut.AggressionLevel)); } Remove(); }
public void explode() { if (!Live) { return; } if (IsSpore) { Live = false; ParticleExplosion.Play(true); Remove(); } else { if (IsSubdivided) { Live = false; ParticleExplosion.Play(true); Remove(); } else { int subs = (6 + (Astronaut.AggressionLevel * 2)); int subsets = (1); for (int i = 0; i < (subs * subsets); i++) { JungleTreeProjectile proj = GameObject.Instantiate(this.gameObject, this.transform.position, this.transform.rotation).GetComponent <JungleTreeProjectile>(); proj.transform.localScale = (this.transform.localScale * (.3f)); proj.DamageRatio = (DamageRatio * (1f / ((float)(subs * subsets)))); float ang = (360f * (((float)i) / ((float)(subs)))); proj.MyRigidbody.velocity = (new Vector2(Mathf.Cos((ang / 360f) * 2f * Mathf.PI), Mathf.Sin((ang / 360f) * 2f * Mathf.PI)) * this.MyRigidbody.velocity.magnitude * ((1 + (i / subs)) / subsets)); proj.IsSubdivided = true; proj.StartTime = Time.time; proj.MyConstantForce.force = (Random.insideUnitCircle.normalized * WINDFORCEFACTOR); //proj } IsSubdivided = true; Live = false; ParticleExplosion.Play(true); Remove(); } } }
public virtual void KillUnit() { if (!isAlive) { return; } isAlive = false; //Debug.Log("Kill unit"); if (explosion) { explosion.Play(); } EventManager.Units.onUnitDestroyed?.Invoke(this); GameManager.Instance.unitManager.Unregister(this); if (gameObject) { Destroy(gameObject); } }