Exemple #1
0
    private void DoAbility(Collider other)
    {
        if ((network && network.IsHost()) || !network)
        {
            Vector3 position = other ? other.gameObject.transform.position : transform.position;
            EventController.FireEvent(new WorldVFXMessage(WorldSpaceVFX.WorldVFXType.bomb, position));
            if (network)
            {
                network.SendWorldVFX(WorldSpaceVFX.WorldVFXType.bomb, position, -1, parent.GetIdOfAbilityBall(this));
            }
            //First radius
            Collider[] cols = Physics.OverlapSphere(transform.position, lastRadius);

            foreach (Collider collider in cols)
            {
                TargetDummy  t     = collider.GetComponent <TargetDummy>();
                EntityHealth enemy = collider.GetComponent <EntityHealth>();

                float sqrDist = (collider.transform.position - transform.position).sqrMagnitude;
                if (sqrDist <= firstRadius * firstRadius)
                {
                    if (t)
                    {
                        t.ShowHit(75);
                    }
                    else if (enemy)
                    {
                        DoBombDamage(enemy, 75);
                    }
                }
                else if (sqrDist <= secondRadius * secondRadius)
                {
                    if (t)
                    {
                        t.ShowHit(50);
                    }
                    else if (enemy)
                    {
                        DoBombDamage(enemy, 50);
                    }
                }
                else if (sqrDist <= lastRadius * lastRadius)
                {
                    if (t)
                    {
                        t.ShowHit(50);
                    }
                    else if (enemy)
                    {
                        DoBombDamage(enemy, 50);
                    }
                }
            }

            SoundManager.PlaySoundAt("Bomb Explosion", transform.position);
        }

        base.TriggerAbility();
    }
Exemple #2
0
    public override void TriggerAbility()
    {
        //Ball Explosion
        Collider[] cols = Physics.OverlapSphere(transform.position, radius);

        foreach (Collider collider in cols)
        {
            TargetDummy t = collider.GetComponent <TargetDummy>();

            if (t)
            {
                t.ShowHit(25);
            }

            //Send object away
            Rigidbody rb = collider.gameObject.GetComponent <Rigidbody>();

            if (rb)
            {
                //Get Directional vector away from ball
                Vector3 dir = (rb.gameObject.transform.position - gameObject.transform.position).normalized;

                //Add force in that direction + some Y component
                rb.AddForce(new Vector3(dir.x, yVectorIncrease, dir.z) * forceAmount, ForceMode.Impulse);
            }
        }
        base.TriggerAbility();
    }