コード例 #1
0
ファイル: Goal.cs プロジェクト: cellecgames/Holier-than-Thou
    void Explosion()
    {
        List <Collider> enemies = Physics.OverlapSphere(transform.position, radius).ToList();

        for (int i = 0; i < enemies.Count; i++)
        {
            if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == transform)
            {
                enemies.Remove(enemies[i]);
                i--;
            }
        }
        //explosion.StartExplosion(duration, Vector3.zero, "PE_GoalExplosion", explosionYOffset);
        explosion.StartExplosion(duration, Vector3.zero, "PE_BlastOut");
        explosion.StartExplosion(duration, Vector3.zero, "PE_BlastOut");
        if (enemies.Count == 0)
        {
            return;
        }
        else
        {
            foreach (Collider enemy in enemies)
            {
                var rb         = enemy.GetComponent <Rigidbody>();
                var competitor = enemy.GetComponent <Competitor>();

                if (enemy.tag == "Player")
                {
                    if (goal != true)
                    {
                        rb.AddExplosionForce(playerPower, explodePosition, radius, playerUpwardForce, ForceMode.Impulse);
                    }
                }
                else
                {
                    if (enemy.GetComponent <Competitor>().name != goalName)
                    {
                        competitor.navMeshOff = true;
                        competitor.GetComponent <AIStateMachine>().enabled = false;
                        rb.AddExplosionForce(power, explodePosition, radius, upwardForce, ForceMode.Impulse);
                        competitor.Blast(competitor.transform, duration);
                    }
                }
            }
        }
    }
コード例 #2
0
    public override void ActivatePowerUp(string name, Transform origin)
    {
        base.ActivatePowerUp(name, origin);

        List <Collider> enemies = Physics.OverlapSphere(origin.position, radius).ToList();

        for (int i = 0; i < enemies.Count; i++)
        {
            if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == origin)
            {
                enemies.Remove(enemies[i]);
                i--;
            }
        }
        explodingObject.transform.position = origin.position;
        ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>();

        if (effect == null)
        {
            effect = explodingObject.AddComponent <ExplosionEffect>();
        }
        effect.StartExplosion(duration, Vector3.zero);

        if (enemies.Count == 0)
        {
            return;
        }
        else
        {
            foreach (Collider enemy in enemies)
            {
                var rb         = enemy.GetComponent <Rigidbody>();
                var competitor = enemy.GetComponent <Competitor>();

                if (!competitor.untouchable)
                {
                    if (enemy.tag == "Player")
                    {
                        rb.AddExplosionForce(playerPower, origin.position, radius, playerUpwardForce, ForceMode.Impulse);
                    }
                    else
                    {
                        competitor.navMeshOff = true;
                        competitor.GetComponent <AIStateMachine>().enabled = false;
                        rb.AddExplosionForce(power, origin.position, radius, upwardForce, ForceMode.Impulse);


                        competitor.Blast(competitor.transform, 1.0f);
                    }
                }
            }
        }
    }
コード例 #3
0
    void Explosion()
    {
        List <Collider> enemies = Physics.OverlapSphere(this.gameObject.transform.position, PUE.DM_radius).ToList();

        for (int i = 0; i < enemies.Count; i++)
        {
            if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == this.gameObject.transform)
            {
                enemies.Remove(enemies[i]);
                i--;
            }
        }
        explodingObject.transform.position = transform.position;
        ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>();

        if (effect == null)
        {
            effect = explodingObject.AddComponent <ExplosionEffect>();
        }
        effect.StartExplosion(duration, Vector3.zero);

        if (enemies.Count == 0)
        {
            return;
        }
        else
        {
            foreach (Collider enemy in enemies)
            {
                var rb         = enemy.GetComponent <Rigidbody>();
                var competitor = enemy.GetComponent <Competitor>();

                if (!competitor.untouchable)
                {
                    if (enemy.tag == "Player")
                    {
                        rb.AddExplosionForce(PUE.DM_playerPower, transform.position, PUE.DM_radius, PUE.DM_playerUpwardForce, ForceMode.Impulse);
                        Destroy(transform.parent.gameObject);
                    }
                    else
                    {
                        competitor.navMeshOff = true;
                        competitor.GetComponent <AIStateMachine>().enabled = false;
                        rb.AddExplosionForce(PUE.DM_power, transform.position, PUE.DM_radius, PUE.DM_upwardForce, ForceMode.Impulse);
                        Destroy(transform.parent.gameObject);
                        competitor.Blast(competitor.transform, duration);
                    }
                }
            }
        }
    }