Beispiel #1
0
    // Use this for initialization
    public void GenerateMap(int columns, int rows, int minMagnitude, int ballAmount, float ballSpeed, float playerSpeed)
    {
        _balls = new List <Ball>();
        _list  = new ColumnContainer[columns];
        for (int i = 0; i < columns; i++)
        {
            _list[i] = new ColumnContainer();
        }

        for (int i = 0; i < ballAmount; i++)
        {
            _balls.Add(Instantiate(_ballPrefab).GetComponent <Ball>());
            _balls[i].speed = ballSpeed;
        }
        _player       = Instantiate(_playerPrefab).GetComponent <PlayerMove>();
        _player.speed = playerSpeed;

        float[] rots = Arc.ArcRotations(columns, -1.0f, 0.0f, false);

        Vector2[] locs;
        for (int i = 0; i < rows; i++)
        {
            locs = Arc.ArcLocations(columns, -1.0f, 0.0f, i + minMagnitude, false);
            for (int j = 0; j < columns; j++)
            {
                _list[j].Add(Instantiate(_brickPrefab));
                _list[j][i].transform.Rotate(new Vector3(0, 0, -rots[j]) * 360);
                _list[j][i].transform.position = locs[j];
                Brick brick = _list[j][i].GetComponent <Brick>();
                brick.myContainer = _list[j];
                brick.Reshape(columns, i + minMagnitude);
                brick.breakable = true;
            }
        }

        locs = Arc.ArcLocations(columns, -1.0f, 0.0f, rows + minMagnitude, false);
        for (int j = 0; j < columns; j++)
        {
            _list[j].Add(Instantiate(_brickPrefab));
            _list[j][rows].transform.Rotate(new Vector3(0, 0, -rots[j]) * 360);
            _list[j][rows].transform.position = locs[j];
            Brick brick = _list[j][rows].GetComponent <Brick>();
            brick.myContainer = _list[j];
            brick.Reshape(columns, rows + minMagnitude);
            brick.breakable = false;
        }
    }
Beispiel #2
0
    public void Reshape(int columns, float magnitude)
    {
        Vector2[] inner = Arc.ArcLocations(columns, -1.0f, 0.0f, magnitude, false);
        Vector2[] outer = Arc.ArcLocations(columns, -1.0f, 0.0f, magnitude + 1, false);

        PolygonCollider2D polygonCollider2d = GetComponent <PolygonCollider2D>();

        Vector3[] Vertices =
        {
            new Vector3(0,                                             0, 0), //left inner
            new Vector3(0,                                             1, 0), //left outer
            new Vector3(outer[1].x - inner[0].x, outer[1].y - inner[0].y, 0), //right outer
            new Vector3(inner[1].x - inner[0].x, inner[1].y - inner[0].y, 0)  //right inner
        };

        int[] Triangles =
        {
            0, 1, 2,
            0, 2, 3
        };

        Mesh mesh = new Mesh();

        mesh.vertices  = Vertices;
        mesh.triangles = Triangles;
        mesh.RecalculateNormals();

        gameObject.GetComponent <MeshFilter>().mesh = mesh;

        Vector2[] path =
        {
            new Vector2(0, 0),   //left inner
            new Vector2(0, 1),   //left outer
            outer[1] - inner[0], //right outer
            inner[1] - inner[0]  //right inner
        };

        polygonCollider2d.enabled   = false;
        polygonCollider2d.pathCount = 1;
        polygonCollider2d.SetPath(0, path);

        //polygonCollider2d.offset = new Vector2(-0.5f, -0.5f);
        polygonCollider2d.enabled = true;
    }