// Update is called once per frame void Update() { if (selectedItem != null) { Cursor.SetCursor(selectedItem.icon, Vector2.zero, CursorMode.Auto); } else { Cursor.SetCursor(basePointer, Vector2.zero, CursorMode.Auto); } //if we click the mouse if (Input.GetMouseButtonDown(1) && !EventSystem.current.IsPointerOverGameObject()) { //make a raycast from the camera to the world Ray clickRay = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit clickHit; //this holds information about what we clicked on //fire the raycast and retrieve the data if (Physics.Raycast(clickRay, out clickHit)) { //if we hit an interactable if (clickHit.transform.GetComponent <Interactable>()) { //interact //Debug.Log("Interactable"); //pass our current action to the interactable and retrieve a response //lastResponse = clickHit.transform.GetComponent<Interactable>().Interact(currentAction); currentTarget = clickHit.transform.GetComponent <Interactable>(); //we're going to store the interactable as our target } else if (clickHit.transform.GetComponent <PathSystem>()) //If we've clicked on something with a path system (the backdrop) { //vector3 point clickedPoint = clickHit.point; //we'll want this soon PathSystem p = clickHit.transform.GetComponent <PathSystem>(); //Store a reference to the path system for convenience //pass to avatar Vector3 point = p.PathPoint(clickedPoint.x); //get the end point of the path from the path system by providing the click avatar.SetPath(p.path, point); //pass the path to our avatar as well as the end point } } UpdateUI(); } }