示例#1
0
    private void selectBuildings(Vector2 start, Vector2 end)
    {
        Vector2 newStart = camera.ScreenToWorldPoint(start);
        Vector2 newEnd   = camera.ScreenToWorldPoint(end);

        float width  = Math.Abs(newStart.x - newEnd.x);
        float height = Math.Abs(newStart.y - newEnd.y);

        if (Math.Abs(width) > .25f || Math.Abs(height) > .25f)
        {
            GameObject selectorBox = new GameObject();

            BoxCollider2D box    = selectorBox.AddComponent <BoxCollider2D>();
            SelectionBox  select = selectorBox.AddComponent <SelectionBox>();
            Rigidbody2D   body   = selectorBox.AddComponent <Rigidbody2D>();
            select.setGameRun(this);
            body.gravityScale = 0;

            box.isTrigger = true;
            if (newStart.x > newEnd.x)
            {
                box.transform.position = newEnd;
            }
            else if (newStart.x <= newEnd.x)
            {
                box.transform.position = newStart;
            }
            if (newStart.y < newEnd.y)
            {
                box.transform.position = new Vector3(box.transform.position.x, newEnd.y);
            }
            else if (newStart.y >= newEnd.y)
            {
                box.transform.position = new Vector3(box.transform.position.x, newStart.y);
            }

            box.offset = new Vector3(width / 2, -height / 2);
            box.size   = new Vector2(width, height);

            selectedBuildings.AddRange(select.getBuildings());
        }
    }