public override void OnCollide(Blastable other)
 {
     if (other.destroyable)
     {
         Destroy(other.gameObject);
     }
 }
    public override void OnCollide(Blastable other)
    {
        if (other.pushable)
        {
            Rigidbody rb = other.GetComponent <Rigidbody> ();

            Vector3 force = (other.transform.position - transform.position).normalized * explosionForce * myFixedDeltaTime * 60;
            rb.AddForce(force, ForceMode.Impulse);
        }
    }
Exemple #3
0
        public void RemoveFromLists(Blastable b)
        {
            /*if (Bullets.Remove(b))
             *  return;
             * if (Enemies.Remove(b))
             *  return;
             * if (Debris.Remove(b))
             *  return;
             * //Aliens.Remove((SpaceAlien)b);*/

            Bullets.Remove(b);
            Enemies.Remove(b);
            Debris.Remove(b);
        }
Exemple #4
0
 bool CollidesWith(Blastable blastable)
 {
     Collider[] inside = Physics.OverlapSphere(transform.position, radius);
     if (inside != null)
     {
         foreach (Collider collider in inside)
         {
             if (collider.gameObject == blastable.gameObject)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemple #5
0
    public void Blast()
    {
        foreach (GameObject trackedObject in trackedObjects)
        {
            Blastable iReceiveBlast = trackedObject.GetComponent <Blastable>();

            if (iReceiveBlast != null && iReceiveBlast.isBlastable() && !iReceiveBlast.isBlasted)
            {
                Vector3 targetPosition = trackedObject.transform.position;
                targetPosition.y = transform.position.y;
                Vector3 toReceiver = (targetPosition - transform.position).normalized;

                RaycastHit[] hitObjects = Physics.RaycastAll(transform.position, toReceiver, blastRange, blastLayer);

                int targetInstanceID = trackedObject.GetComponent <Collider>().GetInstanceID();

                foreach (RaycastHit hitObject in hitObjects)
                {
                    Debug.DrawRay(transform.position, toReceiver * hitObject.distance, Color.red, 30f);

                    if (trackedObject.GetInstanceID() == hitObject.collider.gameObject.GetInstanceID())
                    {
                        iReceiveBlast.BlastReceived();
                    }
                    else
                    {
                        Blastable hitObjectBlast = hitObject.collider.GetComponent <Blastable>();

                        if (hitObjectBlast.isBlastable() && !hitObjectBlast.isBlasted)
                        {
                            break;
                        }
                    }
                }
            }
        }
    }
Exemple #6
0
 public virtual void OnCollide(Blastable blastable)
 {
 }
Exemple #7
0
 public void RemoveFromDebris(Blastable debris)
 {
     Debris.Remove(debris);
 }
Exemple #8
0
 public void RemoveFromEnemies(Blastable enemy)
 {
     Enemies.Remove(enemy);
 }
Exemple #9
0
 public void Blast(Blastable b)
 {
     ToBeBlasted.Add(b);
 }