Пример #1
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        float damageScaler = 1f;

        player = GameObject.FindGameObjectWithTag("Player");
        PlayerController controller = player.GetComponent <PlayerController>();

        if (controller == null)
        {
            Debug.LogWarning("Player controller does not exist!");
        }
        else
        {
            PlayerController.Upgradable damageUpgrade = controller.FindUpgradable("Damage");
            if (damageUpgrade == null)
            {
                Debug.LogWarning("The upgrade does not exist!");
            }
            else
            {
                damageScaler = damageUpgrade.GetScaler();
            }
        }

        switch (collision.gameObject.tag)
        {
        case "Player":
            PlayerController player = collision.gameObject.GetComponent <PlayerController>();
            player.TakeDamage(damage * damageScaler);
            break;

        case "Enemy":
            EnemyController enemy = collision.gameObject.GetComponent <EnemyController>();
            enemy.TakeDamage(damage * damageScaler);
            break;

        default:
            break;
        }
    }
Пример #2
0
    private void OnParticleCollision(GameObject collision)
    {
        float damageScaler = 1f;

        player = GameObject.FindGameObjectWithTag("Player");
        PlayerController controller = player.GetComponent <PlayerController>();

        if (controller == null)
        {
            Debug.LogWarning("Player controller does not exist!");
        }
        else
        {
            PlayerController.Upgradable damageUpgrade = controller.FindUpgradable("Damage");
            if (damageUpgrade == null)
            {
                Debug.LogWarning("The upgrade does not exist!");
            }
            else
            {
                damageScaler = damageUpgrade.GetScaler();
            }
        }

        ps = GetComponent <ParticleSystem>();

        ParticlePhysicsExtensions.GetCollisionEvents(ps, collision, collisionEvents);
        foreach (ParticleCollisionEvent collisionEvent in collisionEvents)
        {
            Component component = collisionEvent.colliderComponent;
            if (component == null)
            {
                Debug.LogWarning("Component does not exist");
            }
            else
            {
                GameObject gameObject = component.gameObject;
                if (gameObject == null)
                {
                    Debug.LogWarning("Game object does not exist");
                }
                else
                {
                    EnemyController enemyController = gameObject.GetComponent <EnemyController>();

                    if (enemyController == null)
                    {
                        Debug.LogWarning("Enemy controller does not exist!");
                    }
                    else
                    {
                        enemyController.TakeDamage(damage * damageScaler);
                    }
                }
            }
            //EnemyController enemyController = collisionEvent.colliderComponent.gameObject.GetComponent<EnemyController>();

            //if (enemyController == null) Debug.LogWarning("Enemy controller does not exist!");
            //else enemyController.TakeDamage(damage * damageScaler);
        }
    }