public override void Contact(BaseGameObject Object) { if (Object.Fraction != fraction) { Object.AddedDamage(damage, DamageTypes.Energy); } Destroy(gameObject); }
public override void Contact(BaseGameObject Object) { Vector2 deltaVlocity = Rigidbodies[0].velocity - Object.Rigidbodies[0].GetVector(Rigidbodies[0].transform.up); float ContactForce = deltaVlocity.magnitude * Rigidbodies[0].mass; Object.Rigidbodies[0].AddForce(Rigidbodies[0].transform.up * ContactForce, ForceMode2D.Impulse); if (Object.Fraction != fraction) { Object.AddedDamage(ContactForce * armorPiercing, DamageTypes.Kinetic); } Destroy(gameObject); }
IEnumerator Boom() { yield return(new WaitForSeconds(0.02f)); foreach (Rigidbody2D R in Rigidbodys) { if (R != null) { BaseGameObject go = R.GetComponent <BaseGameObject> (); Vector2 vector = R.position - (Vector2)transform.position; float sqrDistanse = vector.sqrMagnitude; R.AddForce((1 - Mathf.Min(sqrDistanse / sqrRange, 1)) * vector.normalized * Force, ForceMode2D.Impulse); if (go) { go.AddedDamage((1 - Mathf.Min(sqrDistanse / sqrRange, 1)) * Damage, DamageTypes.Explosion); } } } }