private void OnTriggerEnter2D(Collider2D col) { //collision with a projectile //collision with an enemy //IceSkullProjectile //Enemy_Projectile p if (!Launched) { EnemyProjectile proj = col.gameObject.GetComponent <EnemyProjectile>(); if ((proj != null) && (proj.enabled) && (proj.Live) && (CanFreezeProjectiles)) { freezeProjectile(proj); GameObject.Destroy(proj.gameObject, 10f); return; } } GenericEnemy en = col.gameObject.GetComponent <GenericEnemy>(); if ((en != null) && (en.Alive) && (!col.isTrigger)) { if (!Launched) { if (BlizzardField) { en.freeze(1.2f); FreezePoof.Play(); } } return; } }
public void freezeProjectile(EnemyProjectile proj) { proj.Live = false; proj.enabled = false; FrozenProjectile frp = GameObject.Instantiate(FrozenProjectilePrefab, proj.transform.position, proj.transform.rotation).GetComponent <FrozenProjectile>(); FreezePoof.Play(); foreach (ParticleSystem p in proj.gameObject.GetComponentsInChildren <ParticleSystem>()) { if (!p.transform.Equals(this.transform)) { p.transform.SetParent(null); if (p.main.loop) { p.Stop(); } } else { //p.enabled = false; p.Stop(); } GameObject.Destroy(p.gameObject, p.main.duration); } Rigidbody2D rb = proj.GetComponent <Rigidbody2D>(); if (rb != null) { GameObject.Destroy(rb); } frp.transform.SetParent(proj.transform); frp.transform.position = frp.transform.position + new Vector3(0f, 0f, -2f); }
private void OnCollisionEnter2D(Collision2D col) { if (removing) { return; } //collision with geometry //collision.contacts[0].normal GenericEnemy en = col.gameObject.GetComponent <GenericEnemy>(); if ((en != null) && (en.Alive) && (!col.collider.isTrigger)) { if (CanFreezeEnemies) { if (Launched) { en.freeze(1.2f); FreezePoof.Play(); Remove(); } else { /* * if (FreezeFieldWhileHeld) * { * en.freeze(1.2f); * FreezePoof.Play(); * } */ } } return; } EnemyProjectile proj = col.gameObject.GetComponent <EnemyProjectile>(); if ((proj != null) && (proj.enabled) && (proj.Live) && (CanFreezeProjectiles)) { freezeProjectile(proj); Remove(); return; } Hazard haz = col.gameObject.GetComponent <Hazard>(); if ((haz != null) && (haz.enabled) && (!haz.Permafrozen)) { if (CanFreezeHazards) { freezeHazard(haz); } Remove(); return; } //EnvironmentHazard if (col.gameObject.layer == LayerMask.NameToLayer("Geometry")) { //Hit a wall. //Create Ice on this wall if (FormsIcePillar) { Vector2 ndir = col.contacts[0].normal; IcePillar p = GameObject.Instantiate(IcePillarPrefab, col.contacts[0].point, Quaternion.LookRotation(ndir, -Vector3.forward)).GetComponent <IcePillar>(); //p.transform.Rotate(90f,0f,0f,Space.World); p.Lifetime = 5f; } FreezePoof.Play(); if (BlizzardField) { explode(); } Remove(); return; } }