Esempio n. 1
0
    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);
            }
        }
    }
Esempio n. 2
0
    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);
        }
    }