Beispiel #1
0
    void OnCollisionEnter(Collision col)
    {
        BaseShip    bs = col.gameObject.GetComponent <BaseShip> ();
        Destroyable ds = col.gameObject.GetComponent <Destroyable> ();

        if (bs == whoFiredMe)
        {
            return;
        }
        if (bs != null)
        {
            if (col.collider.CompareTag("Turret"))
            {
                TurretAI ta = col.collider.GetComponent <TurretAI> ();
                if (ta != null)
                {
                    ta.Damage(damage, whoFiredMe);
                }
            }
            else if (col.collider.CompareTag("Weak"))
            {
                bs.Damage(damage * 2, whoFiredMe);
            }
            else
            {
                bs.Damage(damage, whoFiredMe);
            }
        }
        else if (ds != null)
        {
            ds.Damage(damage);
        }
    }
    void OnCollisionEnter2D(Collision2D collision)
    {
        //If this object touches another object with Destroyable component attached it keeps applying damage until the 2 are no longer touching
        Destroyable destroyable = collision.gameObject.GetComponent <Destroyable>();

        if (destroyable)
        {
            destroyable.Damage(_damage);
        }
    }
Beispiel #3
0
    void OnTriggerEnter(Collider col)
    {
        PlayerBullet bul = col.GetComponent <PlayerBullet>();

        if (bul)
        {
            stat.Damage(bul.power);
            Destroy(col.gameObject);
        }
    }
Beispiel #4
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        Destroyable destroyable = collision.gameObject.GetComponent <Destroyable>();

        //If the bullet collides with something that can be destroyed... then call Damage on that script and destroy this bullet
        if (destroyable)
        {
            destroyable.Damage(_damage);
            Destroy(gameObject);
        }
    }
Beispiel #5
0
    private void DoDamage(Destroyable other)
    {
        if (attackWait)
        {
            return;
        }

        attackWait  = true;
        damageTimer = 0;

        other.Damage(damage);
    }
    public void OnEnter(Collider2D collision)
    {
        Destroyable destroyable = collision.GetComponent <Destroyable>();

        if (destroyable == null)
        {
            return;                      //Object can not take damage, so return.
        }
        int damage = Tools.GetDamage(damageSource, stats);

        destroyable.Damage(damage, parent, damageSource);
    }
 IEnumerator AttackCoroutine()
 {
     while (inCombat)
     {
         if (target == null)
         {
             startedAttack = false;
             inCombat      = false;
             break;
         }
         Debug.Log("boop");
         target.Damage(dmg, gameObject);
         yield return(new WaitForSeconds(attackSpeed));
     }
 }
Beispiel #8
0
 private void FollowAndAttack()
 {
     if (enemyReference != null)
     {
         if (Vector3.Distance(transform.position, enemyReference.position) >= MinDist)
         {
             agent.destination = enemyReference.position;
             transform.LookAt(enemyReference);
         }
         else
         {
             agent.destination = transform.localPosition;
             EnemyController enemy = enemyReference.GetComponent <EnemyController>();
             deltaTime += Time.deltaTime;
             if (deltaTime >= 1)
             {
                 animator.SetTrigger("Attack");
                 enemy.Damage(damage);
                 deltaTime = 0;
             }
         }
     }
     else if (destroyableReference != null)
     {
         if (Vector3.Distance(transform.position, destroyableReference.position) >= destroyabledistance)
         {
             agent.destination = destroyableReference.position;
             transform.LookAt(destroyableReference);
         }
         else
         {
             agent.destination = transform.localPosition;
             Destroyable destroyable = destroyableReference.GetComponent <Destroyable>();
             deltaTime += Time.deltaTime;
             if (deltaTime >= 1)
             {
                 animator.SetTrigger("Attack");
                 destroyable.Damage(damage);
                 deltaTime = 0;
             }
         }
     }
 }
Beispiel #9
0
    protected override void OnCantMove <T>(T component)
    {
        switch (attack)
        {
        case Attack.AttL:
            animator.SetTrigger("AttL");
            break;

        case Attack.AttB:
            animator.SetTrigger("AttB");
            break;

        case Attack.AttR:
            animator.SetTrigger("AttR");
            break;

        case Attack.AttU:
            animator.SetTrigger("AttU");
            break;

        default:
            break;
        }
        if (component is Enemy)
        {
            Enemy hitEnemy = component as Enemy;
            hitEnemy.DamageEnemy(damage, onRight, gameObject);
        }
        else if (component is Destroyable)
        {
            Destroyable hitEnemy = component as Destroyable;
            hitEnemy.Damage(1);
        }
        else if (component is Boss)
        {
            Boss hitEnemy = component as Boss;
            hitEnemy.TakeHit(damage, gameObject);
        }
    }
Beispiel #10
0
 public override void Fire1()
 {
     if (canFireP)
     {
         laserTimer = 0;
         int layermask = 1 << 8;
         layermask = ~layermask;
         if (Physics.Raycast(transform.position, transform.forward, out hit, primaryRange, layermask))
         {
             BaseShip    hitShip     = hit.collider.gameObject.GetComponent <BaseShip> ();
             Destroyable hitObstacle = hit.collider.gameObject.GetComponent <Destroyable> ();
             if (hitShip != null)
             {
                 hitShip.Damage(damage, GetComponentInParent <BaseShip> ());
             }
             else if (hitObstacle != null)
             {
                 hitObstacle.Damage(damage);
             }
         }
         primaryTimer = 0;
     }
 }
Beispiel #11
0
    private void Update()
    {
        if (IsFiring)
        {
            //int layerMask = 1 << (LayerMask.NameToLayer("Airplane") | LayerMask.NameToLayer("Enemy"));

            RaycastHit hit;
            if ((Time.time - lastTime) > DamageDelay && Physics.Raycast(FirePoint.position, FirePoint.TransformDirection(Vector3.forward), out hit, MaxDistance))//, layerMask))
            {
                Destroyable foe = hit.transform.GetComponent <Destroyable>();
                if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Enemy"))
                {
                    foe = hit.transform.parent.GetComponent <Destroyable>();
                }
                if (foe)
                {
                    foe.Damage(AttackPower);
                    lastTime = Time.time;
                }
            }
            transform.Rotate(Vector3.forward, RotationSpeed * Time.deltaTime);
        }
    }