void Explode()
    {
        // Show effect
        GameObject explosion = Instantiate(explosionEffect, transform.position, transform.rotation);

        Collider[] colliders = Physics.OverlapSphere(transform.position, radius);

        foreach (Collider nearbyObject in colliders)
        {
            Rigidbody rb = nearbyObject.GetComponent <Rigidbody>();
            if (rb != null)
            {
                rb.AddExplosionForce(force, transform.position, radius, upforce, ForceMode.Impulse);
            }

            EnemyTarget nearbyTarget = nearbyObject.transform.root.gameObject.GetComponent <EnemyTarget>();
            if (nearbyTarget != null)
            {
                float proximity       = (transform.position - nearbyTarget.transform.position).magnitude;
                int   explosiveEffect = 1 - (int)(proximity / radius);

                nearbyTarget.TakeDamage(explosiveEffect * 7);
            }
        }

        // Remove grenade
        Destroy(gameObject);
        Destroy(explosion, 2.5f);
    }
Example #2
0
    void hitDamage(Transform enemy)
    {
        EnemyTarget e = enemy.GetComponent <EnemyTarget>();

        if (e != null)
        {
            e.TakeDamage(damage);
        }
        //Destroy(enemy.gameObject);
    }
    void Shoot()
    {
        muzzleFlash.Play();

        RaycastHit hit;

        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            EnemyTarget target = hit.transform.root.gameObject.GetComponent <EnemyTarget>();

            if (target != null)
            {
                switch (hit.transform.name)
                {
                case "Head":
                    target.TakeDamage(damage * 5);
                    break;

                case "Spine2":
                    target.TakeDamage(damage * 2);
                    break;

                case "LeftUpLeg":
                    target.TakeDamage(damage);
                    break;

                case "LeftLeg":
                    target.TakeDamage(damage);
                    break;

                case "RightUpLeg":
                    target.TakeDamage(damage);
                    break;

                case "RightLeg":
                    target.TakeDamage(damage);
                    break;

                case "LeftArm":
                    target.TakeDamage(damage + 5);
                    break;

                case "LeftForeArm":
                    target.TakeDamage(damage - 5);
                    break;

                case "RightArm":
                    target.TakeDamage(damage + 5);
                    break;

                case "RightForeArm":
                    target.TakeDamage(damage - 5);
                    break;

                default:
                    target.TakeDamage(damage);
                    break;
                }
            }
        }
    }