/// <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); } } }
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; }
/// <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; }
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 }; } }