private void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log("Bullet collided with: " + collision.gameObject.name);

        // Check for enemy
        EnemyHealth eh = collision.gameObject.GetComponent <EnemyHealth>();

        if (eh && eh.Active)
        {
            eh.DealDamage(damage);
            Destroy(this.gameObject);
        }
        else
        {
            // Check for room
            Room r = collision.GetComponent <Room>();
            if (r)
            {
                if (_managerRoom)
                {
                    if (r != _managerRoom)
                    {
                        Destroy(this.gameObject);
                    }
                }
                else
                {
                    _managerRoom = r;
                }
            }
        }
    }
    void OnCollisionEnter2D(Collision2D col)
    {
        EnemyHealth enemyHealth = col.gameObject.GetComponent <EnemyHealth>();

        if (enemyHealth != null)
        {
            enemyHealth.DealDamage(attackDamage);
        }

        Instantiate(explosionPrefab, transform.position, Quaternion.identity);

        Destroy(this.gameObject);
    }
示例#3
0
        private void OnCollisionEnter(Collision collision)
        {
            var go = collision.gameObject;

            if (_onSkill && go.CompareTag("Enemy"))
            {
                EnemyHealth      eh  = go.GetComponent <EnemyHealth>();
                KnockbackHandler kbh = go.GetComponent <KnockbackHandler>();
                kbh.HandleKnockBack(transform.position, _knockbackForce);
                eh.DealDamage(damage);

                if (_stopPlayerOnEnemyCollision)
                {
                    playerRb.velocity = Vector3.zero;
                }
            }
        }
示例#4
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag == "Enemy")
     {
         EnemyHealth _eh = other.gameObject.GetComponent <EnemyHealth> ();
         _eh.DealDamage(Damage);
         if (DiesOnTouch)
         {
             AllowToMove = false;
             if (_anim != null)
             {
                 mov.Stop();
             }
             mov.Kill();
         }
     }
 }
    public override void Fire()
    {
        if (isReadyToFire)
        {
            if (!weaponItem.isRangedWeapon)
            {
                RaycastHit hit;

                if (weaponAnchor != null)
                {
                    Debug.DrawRay(weaponAnchor.transform.position, weaponAnchor.transform.TransformDirection(Vector3.forward) * weaponItem.weaponRange, Color.yellow);
                    if (Physics.Raycast(weaponAnchor.transform.position, weaponAnchor.transform.TransformDirection(Vector3.forward), out hit, weaponItem.weaponRange))
                    {
                        //Debug.Log("Hit succesful, hit: " + hit.transform.gameObject.name);
                        EnemyHealth hitHealth = hit.transform.gameObject.GetComponent <EnemyHealth>();
                        if (hitHealth != null)
                        {
                            hitHealth.DealDamage(weaponItem.weaponDamage);
                            Debug.Log("Dealing damage to enemy");
                        }
                    }
                }
            }
            else
            {
                GameObject projectile = Instantiate(weaponItem.projectileObject, weaponAnchor.transform.position, Quaternion.identity);
                projectile.GetComponent <Rigidbody>().AddForce(transform.forward * weaponItem.projectileSpawnSpeed);
                BulletCollision bc = projectile.GetComponent <BulletCollision>();

                if (bc != null)
                {
                    bc.damage   = weaponItem.weaponDamage;
                    bc.isPlayer = true;
                }
                else
                {
                    GrenadeTimer gt = projectile.GetComponent <GrenadeTimer>();
                    gt.damage = weaponItem.weaponDamage;
                }
            }
        }

        base.Fire();
    }
示例#6
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        //collision whit enemy
        if (((1 << other.gameObject.layer) & enemyLayer) != 0)
        {
            if (other.transform.position.y + collisionTolorance < rb2d.position.y)
            {
                EnemyHealth eh = other.gameObject.GetComponent <EnemyHealth>();
                eh.DealDamage(1);
                addScore(eh.deathScore);

                Vector2 forceDir = Vector2.Reflect(rb2d.velocity.normalized, Vector2.up);
                rb2d.velocity = Vector2.zero;
                rb2d.AddForce(forceDir * collisionForce, ForceMode2D.Impulse);

                return;
            }

            PlayerHit();
        }
    }
示例#7
0
    void Update()
    {
        Vector2 playerPosition        = transform.position;
        Vector2 direction             = playerMovement.LookDirection;
        Vector2 attackPosition        = playerPosition + (direction * attackBornPosition);
        Vector3 attackPositionVector3 = attackPosition;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (hasAttack == false)
            {
                direction.Normalize();
                Instantiate(attackPrefab, attackPosition, Quaternion.Euler(0f, 0f, Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg));

                Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(attackPosition, attackRange, whatIsEnemies);
                for (int i = 0; i < enemiesToDamage.Length; i++)
                {
                    EnemyHealth enemyHealth = enemiesToDamage[i].GetComponent <EnemyHealth>();
                    if (enemyHealth)
                    {
                        enemyHealth.DealDamage(damage);
                    }

                    EarthBossHealth bossHealth = enemiesToDamage[i].GetComponent <EarthBossHealth>();
                    if (bossHealth)
                    {
                        bossHealth.DealDamage(damage);
                    }
                }

                Collider2D[] bossesToDamage = Physics2D.OverlapCircleAll(attackPosition, attackRange, whatIsBoss);
                for (int i = 0; i < bossesToDamage.Length; i++)
                {
                    bossesToDamage[i].GetComponent <EarthBossHealth>().DealDamage(damage);
                }

                StartCoroutine(AttackCooldown());
            }
        }
    }