Esempio n. 1
0
 public override void Contact(BaseGameObject Object)
 {
     if (Object.Fraction != fraction)
     {
         Object.AddedDamage(damage, DamageTypes.Energy);
     }
     Destroy(gameObject);
 }
Esempio n. 2
0
    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);
                }
            }
        }
    }