void OnTriggerEnter2D(Collider2D other) { // Get HP controller HitpointController hitpointController = other.GetComponent <HitpointController> (); // If other has HP if (hitpointController && !hitpointController.isDead) { // Deal damage hitpointController.damage(damage, issuer); // Self distruct (if target is not dead) if (hitpointController.takeBullet) { Destroy(gameObject); } } }
public void damage(float amount, GameObject issuer) { if (isDead || (playerController && playerController.stop)) { return; } // Deal damage hitpoints = Mathf.Clamp(hitpoints -= amount, 0f, maxHitpoints); // Update HP slider updateHitpointSlider(); // Kill if no HP left if (hitpoints == 0f) { // Set to death isDead = true; // Get destroy time float time = 0f; // Dead sound if (deadSound) { deadSound.Play(); time = deadSound.clip.length; } // If has item drop if (deathItemCount > 0 && issuer != gameObject) { // As much as item count for (int i = 0; i < deathItemCount; i++) { // Different positions Vector2 position = new Vector2(transform.position.x * i, transform.position.y * i); // Drop items HitpointController deathItemInstance = Instantiate(deathItem, position, transform.rotation).GetComponent <HitpointController> (); // Collect by issuer deathItemInstance.damage(1f, issuer); // Sound like 1 item deathItemInstance.GetComponent <AudioSource> ().volume /= deathItemCount; } } // If collectable (item) if (tag == "Item") { // Set to collector movingToCollector = issuer.transform; // Save start position movingFrom = transform; // No movement GetComponent <MovementController> ().moveSpeed = 0; } // If needs to be destroyed after dying else if (destroyAfterDeath) { // Destroy after audio finished Destroy(gameObject, time); } } else { // Hit sound if (hitSound) { hitSound.Play(); } } }