Exemplo n.º 1
0
    public void Move()
    {
        float maxDist    = 2f;
        float minDotDist = Mathf.Infinity;

        if (this.item == null)
        {
            int        pickableLayer = 1 << LayerMask.NameToLayer("Pickable");
            GameObject item          = null;
            foreach (Collider hit in Physics.OverlapSphere(transform.position, maxDist, pickableLayer))
            {
                Utility.DistDot dd = Utility.DistDotXZ(hit, transform);
                if (dd.distDot < minDotDist && dd.dot > 0.5f)
                {
                    minDotDist = dd.distDot;
                    item       = hit.gameObject;
                }
            }
            if (item != null)
            {
                PickUp(item);
            }
        }
        else
        {
            GameObject container = null;
            foreach (Collider hit in Physics.OverlapSphere(transform.position, maxDist))
            {
                Utility.DistDot dd = Utility.DistDotXZ(hit, transform);
                if (dd.distDot < minDotDist && dd.dot > 0.5f && hit.gameObject.tag == "Interactable")
                {
                    minDotDist = dd.distDot;
                    container  = hit.gameObject;
                }
            }
            if (container == null)
            {
                Drop();
            }
            else
            {
                DropInto(container);
            }
        }
    }
Exemplo n.º 2
0
    public void Interact()
    {
        float      maxDist    = 2f;
        float      minDotDist = Mathf.Infinity;
        GameObject item       = null;

        foreach (Collider hit in Physics.OverlapSphere(transform.position, maxDist))
        {
            Utility.DistDot dd = Utility.DistDotXZ(hit, transform);
            if (dd.distDot < minDotDist && dd.dot > 0.5f && hit.gameObject.tag == "Interactable")
            {
                minDotDist = dd.distDot;
                item       = hit.gameObject;
            }
        }
        if (item != null)
        {
            item.GetComponent <IInteractable> ().Interact();
        }
    }