コード例 #1
0
    private void Start()
    {
        // is geloof ik beter voor performance dan telkens iets.instance te gebruiken
        //audioManager = AudioManager.Instance;
        audioManager = V3AudioManager.Instance;
        controller   = V3Controller.Instance;
        blockManager = V3BlockManager.Instance;

        // stel het grid en de bounds in
        gridWidth  = controller.gridWidth;
        gridHeight = controller.gridHeight;

        grid = new Transform[gridWidth, gridHeight];
        UpdateOrigins(gridWidth, gridHeight);
        SetLineRendererPositions();

        // voeg minos toe aan pool
        blockManager.AddNMinos(gridWidth * gridHeight);

        // was eerst globaal, maar dat is nu niet meer nodig, omdat de tetromino naar zijn startpositie kan springen
        Vector3 tetrominoSpawnPosition = new Vector3(bounds.topLeft.x + (bounds.topRight.x - bounds.topLeft.x) / 2, bounds.topLeft.y, bounds.topLeft.z);

        // maak tetromino aan
        tetromino        = Instantiate(tetrominoPrefab, tetrominoSpawnPosition, Quaternion.identity).GetComponent <V3Tetromino>();
        tetromino.player = this;

        otherPlayer = controller.player1 == this ? controller.player2 : controller.player1;
        controller.SpawnBall(this);

        verMoveSpeed = verMoveStartSpeed;
    }
コード例 #2
0
    // geeft minos aan tetromino
    public void GetNewShape(V3Tetromino tetromino)
    {
        // kiest willekeurig blok
        Shape s = GetRandomShape();

        // haalt 4 minos uit de pool
        for (int i = 0; i < s.minoPositions.Length; i++)
        {
            GameObject gm   = null;
            V3Mino     mino = null;

            bool idleAvailable = poolManager.IdleObjectAvailable();
            bool busyAvailable = poolManager.BusyObjectAvailable();

            // pak een idle object uit de pool als er een beschikbaar is
            if (idleAvailable)
            {
                gm   = poolManager.GetIdleObject();
                mino = gm.GetComponent <V3Mino>();
            }

            // pak een busy object uit de pool als er een beschikbaar is
            else if (busyAvailable)
            {
                gm   = poolManager.GetBusyObject();
                mino = gm.GetComponent <V3Mino>();

                // zet de positie in het grid op null als hij er aan een toegewezen is
                mino.RemoveFromGrid();
            }

            // als het gelukt is om een object uit de pool te halen
            if (gm != null)
            {
                mino.tetromino = tetromino;
                mino.hp        = Random.Range(1, 3);

                gm.transform.SetParent(tetromino.transform);
                gm.transform.localPosition = s.minoPositions[i];
                gm.GetComponent <SpriteRenderer>().sprite = s.minoSprite;
                // maak het object pas zichtbaar als alle wijzigingen erop zijn toegepast
                gm.SetActive(true);
            }
        }
    }