示例#1
0
        private void OnCollisionEnter2D(Collision2D other)
        {
            // Get IIntractable
            IIntractable otherIntractable = other.gameObject.GetComponent <IIntractable>();

            // Interact with the object if can
            otherIntractable?.InteractWith(gameObject);
        }
示例#2
0
 public void Interact()
 {
     RaycastHit2D[] hitColliders = Physics2D.BoxCastAll(this.transform.position, new Vector2(1.5f, 1.5f), 0f, Vector2.zero);
     if (hitColliders.Length > 1 && !IsInteracting)
     {
         foreach (RaycastHit2D collision in hitColliders)
         {
             if (collision.collider != null)
             {
                 IsInteracting = true;
                 target        = collision.collider.GetComponent <IIntractable>();
             }
         }
     }
 }
示例#3
0
    private void RaycastForInteractable()
    {
        RaycastHit result;

        Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out result, range))
        {
            IIntractable intractable = result.collider.GetComponent <IIntractable>();

            if (intractable != null)
            {
                if (result.distance <= intractable.MaxRange)
                {
                    if (intractable == currentTarget)
                    {
                        return;
                    }
                    else if (currentTarget != null)
                    {
                        currentTarget.OnEndHover();
                        currentTarget = intractable;
                        currentTarget.OnStartHover();
                        return;
                    }
                    else
                    {
                        currentTarget = intractable;
                        currentTarget.OnStartHover();
                        return;
                    }
                }
                else
                {
                    if (currentTarget != null)
                    {
                        currentTarget.OnEndHover();
                        currentTarget = null;
                        return;
                    }
                }
            }
            else
            {
                if (currentTarget != null)
                {
                    currentTarget.OnEndHover();
                    currentTarget = null;
                    return;
                }
            }
        }
        else
        {
            if (currentTarget != null)
            {
                currentTarget.OnEndHover();
                currentTarget = null;
                return;
            }
        }
    }