Exemple #1
0
    void Update()
    {
        if (obj || bulldozing)
        {
            int layer_mask = Physics.DefaultRaycastLayers;
            if (bulldozing)
            {
                //bulldozing needs to see things that typically ignore raycasts, because it needs to be able to see buildings
                layer_mask = layer_mask | (1 << 2);
            }

            Ray        ray = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            Physics.Raycast(ray, out hit, maxDistance: Mathf.Infinity, layerMask: layer_mask);

            if (obj)
            {
                Cursor.SetCursor(build_cursor, Vector2.zero, CursorMode.Auto);

                obj.transform.position = new Vector3(hit.point.x, 0, hit.point.z);

                if (Input.GetMouseButtonDown(0))
                {
                    Build();
                }
                if (Input.GetMouseButtonDown(1))
                {
                    cost_label.gameObject.SetActive(false);
                    Destroy(obj);
                }
                if (Input.GetAxis("Mouse ScrollWheel") > 0 || Input.GetKeyDown("right"))
                {
                    obj.transform.Rotate(Vector3.up * rot_inc);
                }
                if (Input.GetAxis("Mouse ScrollWheel") < 0 || Input.GetKey("left"))
                {
                    obj.transform.Rotate(Vector3.up * -rot_inc);
                }
            }
            if (bulldozing)
            {
                //sets hotspot to middle for bulldoze for now
                Cursor.SetCursor(bulldoze_cursor, Vector2.one * 24, CursorMode.Auto);

                if (Input.GetMouseButtonDown(0) && hit.collider)
                {
                    Destructible destruct = hit.collider.GetComponentInParent <Destructible>();
                    if (destruct)
                    {
                        destruct.Bulldoze();
                        if (!Input.GetKey("left shift"))
                        {
                            bulldozing = false;
                        }
                    }
                }
                if (Input.GetMouseButtonDown(1))
                {
                    bulldozing = false;
                }
            }
        }
        else
        {
            Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
        }
    }