Пример #1
0
        private void HandleHits(RaycastHit[] hits)
        {
            bool wallHit = false;

            foreach (RaycastHit hit in hits)
            {
                Collider collider = hit.collider;
                if (collider != null)
                {
                    //Debug.Log("hit.collider: " + hit.collider.transform.name);
                    Pickup            pickup           = collider.transform.GetComponent <Pickup>();
                    ILinkInteractable linkInteractable = null;
                    if (pickup != null)
                    {
                        HandlePickupHit(pickup);
                    }
                    else
                    {
                        linkInteractable = collider.transform.GetComponent <ILinkInteractable>();
                        if (linkInteractable != null)
                        {
                            HandleLinkInteractableHit(linkInteractable);
                        }
                    }

                    if (pickup == null && linkInteractable == null && !wallHit)
                    {
                        if (CheckIfEnvironmentHit(collider))
                        {
                            if (!_shutdownTimer.Active)
                            {
                                _shutdownTimer.Activate();
                            }

                            wallHit = true;
                        }
                    }
                }
            }

            if (!wallHit && _shutdownTimer.Active)
            {
                _shutdownTimer.Reset();
            }
        }
Пример #2
0
 private void HandleLinkInteractableHit(ILinkInteractable linkInteractable)
 {
     linkInteractable.TryInteract(this);
 }