Exemplo n.º 1
0
    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);
            }
        }
    }
Exemplo n.º 2
0
    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);
            }
        }
    }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
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();
            }
        }
    }
Exemplo n.º 5
0
    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;
            }
        }
    }
Exemplo n.º 6
0
    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);
    }