// Check this first, then check to use held item private void InteractWithItem() { if (Input.GetKeyDown(KeyCode.Space)) { if (GameManager._instance.interactables.Count > 0) { GameObject closestObject = null; float closestDistance = float.MaxValue; foreach (GameObject element in GameManager._instance.interactables) { float distance = Vector3.Distance(transform.position, element.transform.position); if (distance < GameInfo.playerInteractableRange && distance < closestDistance) { closestObject = element; closestDistance = distance; } } if (closestObject != null) { if (closestObject.tag == "Dispenser") { ItemDispenser dispenser = closestObject.GetComponent <ItemDispenser>(); dispenser.Interact(); } else if (closestObject.tag == "Preparer") { ItemPreparer preparer = closestObject.GetComponent <ItemPreparer>(); preparer.Interact(); } else if (closestObject.tag == "Resource Dispenser") { ResourceReplenisher replenisher = closestObject.GetComponent <ResourceReplenisher>(); replenisher.Interact(); } else if (closestObject.tag == "Item Generator") { ItemGenerator generator = closestObject.GetComponent <ItemGenerator>(); generator.Interact(); } else if (closestObject.tag == "Baby") { Baby baby = closestObject.GetComponent <Baby>(); baby.Interact(); } isInteracting = true; } else { print("none found, attempting to use item on self"); UseHeldItem(); } } else { isInteracting = false; } } }