private void OnTriggerEnter(Collider other) { // Checks whether this gameobject is a player, but isn't the player itself. Root is here the most upperparent. if (other.gameObject.tag == "Player" && !GameObject.Equals(other.transform.root.gameObject, parent) && !poisoned) { float poisonDuration = 2f; int poisonCap = 4; MasterBody masterBodyScript = gameObject.transform.root.gameObject.GetComponent <MasterBody>(); poisoned = true; // This enemy will be assigned as the enemy so we can put this in DoPoisonDamage. GameObject enemy; // The enemy is the person who collides with trail. enemy = other.transform.root.gameObject; // Checks whether enemy already has the poison script. if (enemy.GetComponent <Poison>() == null) { // Gives poison script. poisonScript = enemy.AddComponent <Poison>(); } poisonScript.parent = parent; // Our poisonEffecto in this script, gets the value of the poisonEffect from the Poison.cs. poisonScript.poisonEffect = poisonEffecto; poisonScript.StartCoroutine(poisonScript.DoPoisonDamage(poisonDuration, poisonCap, poisonDamage, enemy)); } }