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); } } }
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(); } }