private void grabBrick() { // Check if flystick is inside a brick GameObject[] bricks = GameObject.FindGameObjectsWithTag("Brick"); GameObject selectedItem = null; foreach (GameObject brick in bricks) { if (brick.GetComponent <Collider>().bounds.Contains(flyStickInteraction.transform.position)) { selectedItem = brick; break; } } // Check if flystick points on a brick if (selectedItem == null) { flyStickInteraction.sendRayForBlocks(); selectedItem = flyStickInteraction.SelectedPart; } if (selectedItem) { interactingItem = selectedItem.GetComponent <InteractableItem>(); if (interactingItem) { GameObject towerObject = GameObject.Find("DynamicTower"); if (towerObject) { TowerInteractivity tower = towerObject.GetComponent <TowerInteractivity>(); if (interactingItem.name.Contains(TowerInteractivity.MaxRow.ToString()) && interactingItem.GetComponent <Renderer>().material.color != Color.green) { //return; } if (interactingItem.GetComponent <Renderer>().material.color != Color.green) { if (tower.FirstSelected == null) { tower.select(interactingItem.transform.gameObject); Debug.Log("select: " + interactingItem.transform.gameObject.name); } else { return; } } } if (interactingItem.isInteracting()) { interactingItem.EndInteraction(flyStickInteraction); interactingItem = null; Debug.Log("endInteraction"); } interactingItem.BeginInteraction(flyStickInteraction); } } }
private void Update() { if (enable) { if (InputSynchronizer.GetKeyDown("space")) { float minDistance = float.MaxValue; float distance; foreach (InteractableItem item in objectsHoveringOver) { distance = (item.transform.position - transform.position).sqrMagnitude; if (distance < minDistance) { minDistance = distance; closestItem = item; } } interactingItem = closestItem; closestItem = null; GameObject towerObject = GameObject.Find("DynamicTower"); if (towerObject != null && interactingItem != null) { TowerInteractivity tower = towerObject.GetComponent <TowerInteractivity>(); if (interactingItem.name.Contains(TowerInteractivity.MaxRow.ToString()) && interactingItem.GetComponent <Renderer>().material.color != Color.green) { return; } if (interactingItem.GetComponent <Renderer>().material.color != Color.green) { if (tower.FirstSelected == null) { tower.select(interactingItem.transform.gameObject); } else { return; } } } if (interactingItem) { if (interactingItem.isInteracting()) { interactingItem.EndInteraction(this); } interactingItem.BeginInteraction(this); } } if (InputSynchronizer.GetKeyUp("space") && interactingItem != null) { interactingItem.EndInteraction(this); } } }
public void createPlayers() { TowerInteractivity tower = FindObjectOfType <TowerInteractivity>(); tower.NrOfPlayers = Int32.Parse(nrOfPlayers.transform.FindChild("Text").GetComponent <Text>().text.Substring(0, 1)); tower.Players.Clear(); for (int i = 0; i < tower.NrOfPlayers; i++) { tower.Players.Add(ScriptableObject.CreateInstance <Player>()); tower.Players[i].Score = 0; tower.Players[i].PlayerNumber = i; } tower.Players[0].IsActive = true; Player.ActivePlayer = 0; }
public override void OnSynchronizedCollisionEnter(GameObject other) { if (other.name == "Plane" && !IsBrickInFirstRow()) { TowerInteractivity tower = FindObjectOfType <TowerInteractivity>(); if (tower.state != TowerInteractivity.State.TowerCrashed && transform.GetComponent <Renderer>().material.color != Color.green) { tower.state = TowerInteractivity.State.TowerCrashed; tower.Players[Player.ActivePlayer].Score++; Debug.Log("Tower crashed at " + TimeSynchronizer.time); InfoScreenManager infoScreen = FindObjectOfType <InfoScreenManager>(); infoScreen.LoserView(); } } }
public override void OnSynchronizedCollisionEnter(GameObject other) { TowerInteractivity tower = FindObjectOfType <TowerInteractivity>(); if (InfoScreenManager.IsPlaying && InfoScreenManager.Time > 3 && other.GetComponent <Renderer>().material.color == Color.green && tower.state != TowerInteractivity.State.TowerCrashed) { if (other.transform.position.y > tower.GetHeight() - other.transform.localScale.y && ( Mathf.Abs(other.transform.eulerAngles.y - transform.eulerAngles.y) <= 120 && Mathf.Abs(other.transform.eulerAngles.y - transform.eulerAngles.y) >= 60 || Mathf.Abs(other.transform.eulerAngles.y - transform.eulerAngles.y) <= 300 && Mathf.Abs(other.transform.eulerAngles.y - transform.eulerAngles.y) >= 240)) { tower.state = TowerInteractivity.State.BlockCorrectlyPlaced; } else { tower.state = TowerInteractivity.State.BlockPlacing; } } }
public static int changeActivePlayer() { TowerInteractivity tower = FindObjectOfType <TowerInteractivity>(); foreach (Player p in tower.Players) { p.IsActive = false; } if (ActivePlayer < tower.NrOfPlayers - 1) { ActivePlayer++; tower.Players[ActivePlayer].IsActive = true; } else { ActivePlayer = 0; tower.Players[0].IsActive = true; } return(ActivePlayer); }