Exemplo n.º 1
0
        public static Direction GetUserVisibleDirection(AITank tank, List <Direction> allowedDirections)
        {
            if (Walls != null)
            {
                foreach (var item in Walls)
                {
                    if (!(item is UserControlledTank))
                    {
                        continue;
                    }

                    if (allowedDirections.Contains(Direction.Left) && tank.LeftRectangle.Intersects(item.collisionRect))
                    {
                        return(Direction.Left);
                    }
                    else if (allowedDirections.Contains(Direction.Right) && tank.RightRectangle.Intersects(item.collisionRect))
                    {
                        return(Direction.Right);
                    }
                    else if (allowedDirections.Contains(Direction.Up) && tank.UpRectangle.Intersects(item.collisionRect))
                    {
                        return(Direction.Up);
                    }
                    else if (allowedDirections.Contains(Direction.Down) && tank.DownRectangle.Intersects(item.collisionRect))
                    {
                        return(Direction.Down);
                    }
                }
            }

            return(Direction.None);
        }
    void OnCollisionEnter(Collision collision)
    {
        Debug.Log(collision.collider.name);
        Vector3 position = collision.transform.position;

        if (collision.gameObject.name [0] == 'A')
        {
            AITank ai = collision.gameObject.GetComponent <AITank> ();
            ai.HP = 0;
            if (ai.HP <= 0)
            {
                Instantiate(Resources.Load("Explosion1"), ai.transform.position, Quaternion.identity);
            }
            Player.Instance.recollectBullet();
        }
        else if (collision.gameObject.name == "Player")
        {
            if (!Player.Instance.transform.GetComponent <HP> ().getDamage(b.ATK))
            {
                Player.Instance.isRunning = false;
                Player.Instance.HP       -= b.ATK;
                if (Player.Instance.HP <= 0)
                {
                    Instantiate(Resources.Load("Explosion1"), Player.Instance.transform.position, Quaternion.identity);
                    TankFactory.Instance.isGameOver = true;
                }
                TankFactory.Instance.recollectBullet();
            }
        }
        else
        {
            if (b.owner == "TKF")
            {
                TankFactory.Instance.recollectBullet();
            }
            else
            {
                Player.Instance.recollectBullet();
            }
        }
        Instantiate(Resources.Load("Explosion8"), new Vector3(position.x, position.y, position.z), Quaternion.identity);
        flag = false;
    }
Exemplo n.º 3
0
    IEnumerator Produce()
    {
        status = "producing";
        yield return(new WaitForSeconds(4.0f));

        if (brokens.Count == 0)
        {
            Vector3    position = transform.position;
            GameObject ai       = Instantiate(Resources.Load("AI"), new Vector3(position.x + 8.0f, 2.0f, position.z - 5.0f), Quaternion.identity) as GameObject;
            tanks.Add(ai.GetComponent <AITank>());
        }
        else
        {
            AITank ai = brokens [0];
            ai.Restart();
            brokens.Remove(ai);
            tanks.Add(ai);
        }
        status = "ready";
    }
Exemplo n.º 4
0
 public void recollect(AITank tank)
 {
     tanks.Remove(tank);
     brokens.Add(tank);
 }