示例#1
0
    private void DetermineBestStartEndPoints()
    {
        Room  BestStartRoom   = null;
        Room  BestEndRoom     = null;
        float LongestDistance = 0;

        for (int i = 0; i < RoomGroup.transform.childCount; i++)
        {
            Room r = RoomGroup.transform.GetChild(i).GetComponent <Room>();
            for (int j = i + 1; j < RoomGroup.transform.childCount; j++)
            {
                Room  r2   = RoomGroup.transform.GetChild(j).GetComponent <Room>();
                float dist = Vector2.Distance(new Vector2(r.Xcenter, r.Ycenter), new Vector2(r2.Xcenter, r2.Ycenter));
                if (dist > LongestDistance)
                {
                    BestStartRoom   = r;
                    BestEndRoom     = r2;
                    LongestDistance = dist;
                }
            }
        }

        if (RoomGroup.transform.childCount == 1)
        {
            BestStartRoom = RoomGroup.transform.GetChild(0).GetComponent <Room>();
            BestEndRoom   = RoomGroup.transform.GetChild(0).GetComponent <Room>();
        }

        GameObject BestStart = null;
        GameObject BestEnd   = null;

        List <GameObject> R1Tiles = BestStartRoom.GetFloors();
        List <GameObject> R2Tiles = BestEndRoom.GetFloors();

        LongestDistance = 0;

        for (int i = 0; i < R1Tiles.Count; i++)
        {
            GameObject o = R1Tiles[i];
            for (int j = 0; j < R2Tiles.Count; j++)
            {
                GameObject o2   = R2Tiles[j];
                float      dist = Vector2.Distance(o.transform.position, o2.transform.position);
                if (dist > LongestDistance)
                {
                    BestStart       = o;
                    BestEnd         = o2;
                    LongestDistance = dist;
                }
            }
        }

        //TODO: add start/end behavior scripts to the selected tiles
        Player.transform.position = (Vector2)BestStart.transform.position;
        end = BestEnd.AddComponent <EndTile>();
        end.SetPlayer(Player);

        /*sr = gameObject.AddComponent<SpriteRenderer>();
         * sprite = Resources.Load<Sprite>("Enemy");
         * sr.sprite = sprite;*/

        SpriteRenderer StartSprite = BestStart.GetComponent <SpriteRenderer>();
        SpriteRenderer EndSprite   = BestEnd.GetComponent <SpriteRenderer>();

        Sprite startSprite = Resources.Load <Sprite>("Start");

        StartSprite.sprite = startSprite;

        Sprite endSprite = Resources.Load <Sprite>("Start");

        EndSprite.sprite  = endSprite;
        StartSprite.color = new Color(0.75f, 1.0f, 0.75f);
        EndSprite.color   = new Color(1.0f, 0.75f, 0.75f);
    }