void Update() { CurrentInteractable = FindClosestInteractableObject(); if (CurrentInteractable != null) { CurrentInteractable.Selected = true; //AnimateInteration(); } if ((lastinteractableObject != null) && (lastinteractableObject != CurrentInteractable)) { lastinteractableObject.Selected = false; } lastinteractableObject = CurrentInteractable; bool inputBool = Input.GetKeyDown("e"); if ((inputBool) && (CurrentInteractable != null)) { if (!DialogueManager.main.Animating) { CurrentInteractable.RequesCurrentDialogue(); CurrentInteractable.TickTowardsNextDialogue(); CurrentInteractable.CallAction(this.gameObject); } else { DialogueManager.main.AbortDialogue(); } } }
DialogueInteractableObject FindClosestInteractableObject() { Collider2D[] collidersWithinRadius = Physics2D.OverlapCircleAll(transform.position, InteractableRadius); float CloseDistance = InteractableRadius + 1; Collider2D ClosestCollider = null; DialogueInteractableObject ClosestInteractable = null; foreach (Collider2D collider2D in collidersWithinRadius) { DialogueInteractableObject interactable = collider2D.gameObject.GetComponent <DialogueInteractableObject>(); if (interactable == null) { continue; } float distanceToCollider = Vector2.Distance(collider2D.transform.position, transform.position); if (distanceToCollider < CloseDistance) { ClosestCollider = collider2D; CloseDistance = distanceToCollider; ClosestInteractable = interactable; } } return(ClosestInteractable); }