// Update is called once per frame void Update() { if (MoveTrigger) { SetDirection(); } if (Input.GetMouseButtonDown(0)) { Ray rayLeft = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit[] hitsLeft; hitsLeft = Physics.RaycastAll(rayLeft, 300f); if (hitsLeft.Length > 0) { foreach (RaycastHit hit in hitsLeft) { float hitDistance = Vector3.Distance(hit.point, this.transform.position); if (hitDistance > distanceInteraction) { StartMoving(hit); } } } PreviousPosition = this.transform.position; } if (Input.GetMouseButtonDown(1)) { Ray rayRight = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit[] hitsRight; hitsRight = Physics.RaycastAll(rayRight, 300f); if (triggerRightClick && hitsRight.Length > 0) { foreach (RaycastHit hit in hitsRight) { if (triggerRightClick) { string hitTag = hit.transform.tag; float hitDistance = Vector3.Distance(hit.point, this.transform.position); switch (hitTag) { case "NPC": if (hitDistance < distanceInteractionNPC) { if (holdItem) { Debug.Log("I can use item on this NPC"); //manager.UseItem(); } triggerRightClick = false; } triggerRightClick = false; break; case "Item": if (hitDistance < distanceInteraction) { if (!holdItem && grabbedItem == null) { holdItem = true; grabbedItem = hit.transform.GetComponentInChildren <scr_item>(); grabbedItem.ItemGrabbed(this.transform); } else { scr_item targetItem = hit.transform.GetComponent <scr_item>(); manager.UseItem(grabbedItem, targetItem); } triggerRightClick = false; } break; case "Ground": if (grabbedItem && hitDistance < distanceToDrop) { grabbedItem.ItemDropped(hit.point); grabbedItem = null; holdItem = false; } triggerRightClick = false; break; default: break; } } } triggerRightClick = true; } } MyAnimator.SetFloat("speed", Agent.velocity.magnitude); }