// use either Send Damage or Reveice Damage // dont use both! public void SendDamage(CollisionDamageTrigger otherCollisionTrigger, float damageValue) { if (sendDamageEnabled) { otherCollisionTrigger.ReceiveCollisionDamage(damageValue); } }
private void OnTriggerEnter2D(Collider2D otherCollider2d) { if (!collisionDetectionEnabled) { Debug.LogWarning(this.ToString() + " Collision Detection disabled!"); } // if (CheckIfCollisionShouldBeIgnored (otherCollider2d)) if (CheckIfCollisionShouldBeIgnoredWithLayerMaskCompare(otherCollider2d)) { // generic, alle Collisionen werden gleich behandelt/verarbeitet #if UNITY_EDITOR // Debug.LogError (this.ToString () + " ignore Collision with " + otherCollider2d.gameObject.name + " in Layer " + LayerMask.LayerToName(otherCollider2d.gameObject.layer)); #endif } else { // Collision is not Ignored -> Start Triggering CollisionDamageTrigger otherCollisionTrigger = otherCollider2d.GetComponent <CollisionDamageTrigger>(); if (otherCollisionTrigger != null) { float otherSendDamageValue = otherCollisionTrigger.GetDamageValue(); float myDamageValue = sendDamageValue * sendDamageMulti; float receiveDamageValue = receiveDamageMulti * otherSendDamageValue; #if UNITY_EDITOR // Debug.Log (this.ToString() + " Collision is not Ignored -> Start Triggering "); // Debug.Log (this.ToString() + " otherSendDamageValue " + otherSendDamageValue); // Debug.Log (this.ToString() + " myDamageValue " + myDamageValue); // Debug.Log (this.ToString() + " receiveDamageValue " + receiveDamageValue); #endif // de-coupling LayerCollision currentLayerCollision = GetLayerCollision(otherCollider2d); if (currentLayerCollision != null) { // Kollisionpartner-Ebene ist in layerCollision aufgelistet if (!currentLayerCollision.IgnoreCollision) { // Trigger Layer specific Collision Event currentLayerCollision.TriggerCollisionEvent(); if (receiveDamageEnabled) { // Trigger Layer spzefic Collision Damage Event currentLayerCollision.TriggerCollisionEvent(receiveDamageValue); } } } else { // Kollisionpartner-Ebene ist NICHT in layerCollision aufgelistet } // Trigger global Collision Event NotifyCollision(); // Trigger global CollisionDamage Event if (receiveDamageEnabled) { NotifyCollisionDamage(receiveDamageValue); } // else // NotifyCollisionDamage (0f); // // coupling // healthManager.ReceiveHealthDamage (otherSendDamageValue); } else { #if UNITY_EDITOR // Debug.LogError (this.ToString () + " can't find CollisionTriggerScript @ " + otherCollider2d.gameObject.name + " in Layer " + LayerMask.LayerToName(otherCollider2d.gameObject.layer)); #endif } } // // additional collisionbehaviour // if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Enemy")) // { // // to this... // // } // else if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Player")) // { // // do that.. // } // // // problem htis is a generic model, can // // additional collisionbehaviour with seperation if this object is player or enemy or... (better with Polymorphism // // CollisionDamageTrigger <|- EnemyCollisionDamageTrigger // // CollisionDamageTrigger <|- PlayerCollisionDmageTrigger // if (this.gameObject.layer == "Player") // { // if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Enemy")) // { // // to this... // // } // else if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Player")) // { // // do that.. // } // } // else if ("Enemy") // { // if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Enemy")) // { // // to this... // // } // else if (otherCollider2d.gameObject.layer == LayerMask.NameToLayer ("Player")) // { // // do that.. // } // } }