// 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; } } }