void Update() { var mx = Input.mousePosition.x; var my = cam.pixelHeight - Input.mousePosition.y; //for perspective cam var mz = cam.nearClipPlane; if (cam.orthographic) // for ortho { my = Input.mousePosition.y; mz = 0; } var screenPoint = cam.ScreenToWorldPoint(new Vector3(mx, my, mz)); mouseCursorWorld.SetValue(screenPoint); mousePositionCanvas.SetValue(Input.mousePosition); mouseRay = cam.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(mouseRay, out hit, Mathf.Infinity, layerHit)) { if (hitPoint) { hitPoint.SetValue(hit.point); } if (hitObject) { hitObject.SetValue(hit.collider.gameObject); } // print ("hitpoint: " + hitPoint.Value); // if (hitObject && hitObject.Value.tag != "Item") print ("hitObject: " + hitObject.Value.name); } else { if (hitObject) { hitObject.SetValue(null as GameObject); } } }
void Update() { var viewportPos = cam.ScreenToViewportPoint(Input.mousePosition); Ray ray = cam.ViewportPointToRay(viewportPos); bool didHit = Physics.Raycast(ray, out RaycastHit hit); if (didHit) { CursorPosition.SetValue(hit.point); if (crossHairInstance == null) { crossHairInstance = Instantiate(crosshairPrefab, hit.point, Quaternion.identity, transform); } crossHairInstance.transform.position = hit.point; crosshairPrefab.SetActive(true); // print("did hit" + hit.collider.name); // Debug.DrawRay(ray.origin, ray.direction * 100, Color.white, 1000); if (Input.GetMouseButtonDown(0)) { LastMouseClickPosition.SetValue(hit.point); if (destinationInstance == null) { destinationInstance = Instantiate(crosshairPrefab, LastMouseClickPosition.Value, Quaternion.identity, transform); } destinationInstance.transform.position = LastMouseClickPosition.Value; destinationInstance.SetActive(true); } if (destinationInstance != null) { if (!nma.pathPending && !nma.hasPath) { destinationInstance.SetActive(false); } } } else { crosshairPrefab.SetActive(false); } }