Example #1
0
    /// <summary>
    /// Check bullet collisions and create hit explosions and effects.
    /// Also destroy self if life reached zero.
    /// </summary>
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Bullet"))
        {
            BulletController bullet = other.GetComponent <BulletController>();
            life -= bullet.damage;
            Destroy(bullet.gameObject);

            ForceExplosionController explosion = Instantiate(explosionPrefab, transform.position, Quaternion.identity).GetComponent <ForceExplosionController>();
            if (life > 0)
            {
                explosion.force    = hitForce;
                explosion.duration = hitDuration;
                explosion.distance = hitDistance;
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
            }
            else
            {
                explosion.force    = deathForce;
                explosion.duration = deathDuration;
                explosion.distance = deathDistance;
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Instantiate(particlesPrefab, transform.position, particlesPrefab.transform.rotation);
                Destroy(gameObject);
            }
        }
    }
Example #2
0
    IEnumerator LateExplosionCreation(float force, float duration, float distance)
    {
        yield return(new WaitForEndOfFrame());

        ForceExplosionController explosion = Instantiate(explosionPrefab, transform.position, Quaternion.identity).GetComponent <ForceExplosionController>();

        explosion.force    = force;
        explosion.duration = duration;
        explosion.distance = distance;
    }
Example #3
0
    /// <summary>
    /// Setup references and make creation explosion.
    /// </summary>
    void Start()
    {
        rb     = GetComponent <Rigidbody>();
        player = GameObject.FindWithTag("Player").GetComponent <PlayerController>();

        ForceExplosionController explosion = Instantiate(explosionPrefab, transform.position, Quaternion.identity).GetComponent <ForceExplosionController>();

        explosion.force    = creationForce;
        explosion.duration = creationDuration;
        explosion.distance = creationDistance;
    }
Example #4
0
    protected override void OnUpdate()
    {
        for (int i = 0; i < m_Data.Length; ++i)
        {
            ForceExplosionController forceExplosionController = m_Data.forceExplosion[i];

            m_Data.forceGenerator[i] = new ForceGenerator {
                force    = forceExplosionController.force,
                distance = forceExplosionController.distance
            };
        }
    }