private void SceneObjectPressed(RaycastHit2D hit, Vector2 hitPosition) { var fan = hit.transform.GetComponent <FanSelector>(); if (fan != null) { if (!fan.selected) { fan.Select(); } selectedFan = fan; dragOffset = (Vector2)fan.transform.parent.position - hitPosition; grabbedFan = fan; } }
private void SceneObjectClicked(RaycastHit2D hit) { Debug.Log($"Over Scene Object {hit.collider.name}"); var fan = hit.transform.GetComponent <FanSelector>(); if (fan != null) { if (fan.selected) { fan.Deselect(); selectedFan = null; } else { DeselectAllFans(); fan.Select(); selectedFan = fan; } } }
private FanSelector PlaceFan(Vector2 pos) { if (availableFans <= fans.Count) { return(null); } DeselectAllFans(); var obj = Instantiate(GameManager.Instance.fanPrefab, pos, Quaternion.identity); var fan = obj.GetComponentInChildren <FanSelector>(); fans.Add(fan); if (!isTutorial) { fan.Select(); } fan.level = this; selectedFan = fan; UpdateFanCount(); return(fan); }
private void Update() { if (GameManager.Instance.State != GameState.Running) { if (Input.GetMouseButtonDown(0)) { var hit = Physics2D.Raycast(mainCamera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 0, GameManager.Instance.FanLayerMask); // check if we clicked a scene object (fan/player/saw blade) if (hit) { SceneObjectClicked(hit); if (isTutorial) { tManager.Event("FanClicked"); } } // check if we want to place a fan. else if (!EventSystem.current.IsPointerOverGameObject()) { if (isTutorial && !tManager.canPlaceFan) { return; } PlaceFan(Camera.main.ScreenToWorldPoint(Input.mousePosition)); if (isTutorial) { tManager.Event("FanPlaced"); } } } // If we hold left click (move) if (Input.GetMouseButton(0)) { // If we already grabbed a fan if (grabbedFan != null) { grabbedFan.Move((Vector2)mainCamera.ScreenToWorldPoint(Input.mousePosition) + dragOffset); if (isTutorial) { tManager.Event("FanMoved"); } } else { var hit = Physics2D.Raycast(mainCamera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 0, GameManager.Instance.FanLayerMask); // check if we clicked a scene object (fan/player/saw blade) if (hit) { if (currentPressTime >= GameManager.Instance.pressThreshold) { SceneObjectPressed(hit, mainCamera.ScreenToWorldPoint(Input.mousePosition)); } currentPressTime += Time.deltaTime; } } } // Reset press time if (Input.GetMouseButtonUp(0)) { currentPressTime = 0; grabbedFan = null; } } }
public void RemoveFan(FanSelector fan) { fans.Remove(fan); Destroy(fan.transform.parent.gameObject); UpdateFanCount(); }
public void DeselectAllFans() { fans.ForEach(f => { f.Deselect(); }); selectedFan = null; }