Пример #1
0
        // Update is called once per frame
        void Update()
        {
            if (!gameManager.GameHasStarted())
            {
                return;
            }

            Vector3 mousePos = Input.mousePosition;

            if (hovering && Input.GetMouseButtonDown(0))
            {
                resource         = SpawnResource();
                resourceRenderer = resource.GetComponent <Renderer>();
                SetResourceAlpha(blueprintAlpha);
                dragging = true;
            }

            if (resource != null && Input.GetMouseButton(0))
            {
                Vector3    dir = new Vector3(mousePos.x, 0, mousePos.y);
                RaycastHit hit;
                if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
                {
                    resource.transform.position = new Vector3(Mathf.Round(hit.point.x / gridLockSize) * gridLockSize + positionOffset.x, positionOffset.y, Mathf.Round(hit.point.z / gridLockSize) * gridLockSize + positionOffset.z);
                }
            }

            if (!hovering && Input.GetMouseButtonUp(0) && resource != null)
            {
                if (!gameManager.HasSufficientFundsToPlace(resourceName))
                {
                    Destroy(resource);
                }
                else
                {
                    gameManager.AddEnergyResource(resourceName);
                    SetResourceAlpha(1.0f);
                    dragging = false;
                    resource = null;
                }
            }
        }