void ClickHandler(Vector2 pos)
    {
        Ray        ray = Camera.main.ScreenPointToRay(pos);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            if (hit.transform.tag == "PlayerField")
            {
                if (currentPlayerEnergy > player.energyCost)
                {
                    currentPlayerEnergy -= player.energyCost;
                    if (player.isAtk)
                    {
                        GameObject soldierObjPlayer = Instantiate(soldierAtkPrefab, hit.point, Quaternion.identity, gameplayComponents.transform);
                        SoldierAtk s = soldierObjPlayer.GetComponent <SoldierAtk>();
                        s.ball = ballObj;
                        s.Soldier.SetAttr(true);
                        s.Soldier.GameManager = this;
                        AtkSoldiers.Add(s);
                    }
                    else
                    {
                        GameObject soldierObj = Instantiate(soldierDefPrefab, hit.point, Quaternion.identity, gameplayComponents.transform);
                        SoldierDef s          = soldierObj.GetComponent <SoldierDef>();
                        s.Soldier.SetAttr(true);
                        s.Soldier.GameManager = this;
                        DefSoldiers.Add(s);
                    }
                }
            }
            else if (hit.transform.tag == "EnemyField")
            {
                if (currentEnemyEnergy > enemy.energyCost)
                {
                    currentEnemyEnergy -= enemy.energyCost;
                    if (enemy.isAtk)
                    {
                        GameObject soldierObjEnemy = Instantiate(soldierAtkPrefab, hit.point, Quaternion.Euler(0, 180, 0), gameplayComponents.transform);
                        SoldierAtk s = soldierObjEnemy.GetComponent <SoldierAtk>();
                        s.ball = ballObj;
                        s.Soldier.SetAttr(false);
                        s.Soldier.GameManager = this;
                        AtkSoldiers.Add(s);
                    }
                    else
                    {
                        GameObject soldierObjEnemy = Instantiate(soldierDefPrefab, hit.point, Quaternion.Euler(0, 180, 0), gameplayComponents.transform);
                        SoldierDef s = soldierObjEnemy.GetComponent <SoldierDef>();
                        s.Soldier.SetAttr(false);
                        s.Soldier.GameManager = this;
                        DefSoldiers.Add(s);
                    }
                }
            }
        }
    }
Exemple #2
0
    void OnCollisionEnter(Collision collision)
    {
        if (gameObject.tag == "SoldierDef" && collision.gameObject.tag == "SoldierAtk")
        {
            SoldierDef soldierDef = transform.parent.GetComponent <SoldierDef>();
            SoldierAtk soldierAtk = collision.transform.parent.GetComponent <SoldierAtk>();

            if (transform.parent.GetComponent <SoldierDef>().target == soldierAtk)
            {
                soldierDef.targetCaught = true;
                soldierAtk.isCaught     = true;
            }
        }
    }
Exemple #3
0
    void ClickHandler(Vector2 pos)
    {
        // 2D screen => 3d world space
        Ray        ray = Camera.main.ScreenPointToRay(pos);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            //OnscreenDebugOutput.Log($"Touch at {pos}, hit {hit.transform.tag} at {hit.point}");
            if (hit.transform.tag == "PlayerField")
            {
                if (currentPlayerEnergy > player.energyCost)
                {
                    currentPlayerEnergy -= player.energyCost;
                    if (player.isAtk)
                    {
                        GameObject soldierObjPlayer = Instantiate(soldierAtkPrefab, hit.point, Quaternion.identity, gameplayComponents.transform);
                        SoldierAtk s = soldierObjPlayer.GetComponent <SoldierAtk>();
                        s.ball = ballObj;
                        s.Soldier.SetAttr(true);
                        s.Soldier.GameManager = this;
                        AtkSoldiers.Add(s);
                        //OnscreenDebugOutput.Log($"Added {s} at {hit.point}");
                    }
                    else
                    {
                        GameObject soldierObj = Instantiate(soldierDefPrefab, hit.point, Quaternion.identity, gameplayComponents.transform);
                        SoldierDef s          = soldierObj.GetComponent <SoldierDef>();
                        s.Soldier.SetAttr(true);
                        s.Soldier.GameManager = this;
                        DefSoldiers.Add(s);
                        //OnscreenDebugOutput.Log($"Added {s} at {hit.point}");
                    }
                }
            }
            // TODO: remove this pls
            // Replace with a simple *Do nothing*
            // or a message to let the player know that
            // they can't put soldiers in enemy's field.
            // Or only activate this in 2-players mode
            else if (hit.transform.tag == "EnemyField")
            {
                if (currentEnemyEnergy > enemy.energyCost)
                {
                    currentEnemyEnergy -= enemy.energyCost;
                    if (enemy.isAtk)
                    {
                        GameObject soldierObjEnemy = Instantiate(soldierAtkPrefab, hit.point, Quaternion.Euler(0, 180, 0), gameplayComponents.transform);
                        SoldierAtk s = soldierObjEnemy.GetComponent <SoldierAtk>();
                        s.ball = ballObj;
                        s.Soldier.SetAttr(false);
                        s.Soldier.GameManager = this;
                        AtkSoldiers.Add(s);
                    }
                    else
                    {
                        GameObject soldierObjEnemy = Instantiate(soldierDefPrefab, hit.point, Quaternion.Euler(0, 180, 0), gameplayComponents.transform);
                        SoldierDef s = soldierObjEnemy.GetComponent <SoldierDef>();
                        s.Soldier.SetAttr(false);
                        s.Soldier.GameManager = this;
                        DefSoldiers.Add(s);
                    }
                }
            }
        }
    }