public void UseItem() { PotionSelector.PotionElement selected = PotionSelector.GetSelectedPotionElement(); //currentItem ist momentan leer, aber neues, verfuegbares potion ist ausgewaehlt if (currentItem == null && selected.GetCount() > 0) { currentItem = Instantiate(selected.prefab, hand.position, Quaternion.identity, hand).GetComponent <Potion>(); } //currentItem ist vorhanden if (currentItem != null) { //currentItem wurde noch nicht geworfen und es wurde ein neues potion gewaehlt if (!currentItem.HasBeenThrown() && PotionSelector.GetSelectedPotionType() != currentItem.type) { //momentan ausgewaehltes zerstoeren Destroy(currentItem.gameObject); currentItem = null; //falls neues ausgewaehltes verfuegbar, erstellen if (selected.GetCount() > 0) { currentItem = Instantiate(selected.prefab, hand.position, Quaternion.identity, hand).GetComponent <Potion>(); } } //falls mausklick, currentItem vorhanden und momentanes currentItem noch nicht geworfen... if (input.isFiring && currentItem != null && !currentItem.HasBeenThrown()) { ThrowPotion(); //werfen StartCoroutine(RespawnPotionCoroutine(currentItem)); //respawnroutine starten } } }
IEnumerator RespawnPotionCoroutine(Potion thrownPotion) { yield return(new WaitForSeconds(0.2f)); //cooldown PotionSelector.PotionElement selected = PotionSelector.GetSelectedPotionElement(); //wenn currentItem==null ist das potion wahrscheinlich schon geplatzt, ersetzen in UseItem() //wenn currentItem vorhanden if (currentItem != null) { //geworfenen Potion ist noch im flug if (currentItem == thrownPotion) { if (selected.GetCount() > 0) { currentItem = Instantiate(selected.prefab, hand.position, Quaternion.identity, hand).GetComponent <Potion>(); } } } }