コード例 #1
0
 public bool InGridCheck(TetrisCube cube)
 {
     if (cube.partOne.position.x > grid[0].transform.position.x - scaledHalfTileWidth && cube.partOne.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth &&
                                                                                                                  cube.partOne.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partOne.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight &&
                                                                                                                                                                                                                           cube.partTwo.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partTwo.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth &&
                                                                                                                                                                                                                                                                                                                                   cube.partTwo.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partTwo.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight &&
                                                                                                                                                                                                                                                                                                                                                                                                                                            cube.partThree.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partThree.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth &&
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        cube.partThree.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partThree.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight &&
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     cube.partFour.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partFour.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth &&
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               cube.partFour.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partFour.position.y < grid[gridSize - 1].transform.position.y + scaledHalfTileHeight)
     {
         return(true);
     }
     return(false);
 }
コード例 #2
0
ファイル: TetrisSpawner.cs プロジェクト: GreatReaPerz/SP4
    //Key for setting instantiated unit in array
    //Spawner for the pos of spawner in scene
    //Team for which team the unit is (0 for player , 1 for enemy)
    //Type is for unit type
    //Shape is the shape to instantiate
    int SpawnTetris(int key, GameObject spawner, int team, int type, GameObject shape)
    {
        TetrisCube theCube = new TetrisCube();

        //Instantiate base on spawner pos
        if (team == 0)
        {
            theCube.parentCube = Instantiate(shape, spawner.transform.position, spawner.transform.rotation);
        }
        else    //Rotate by 180 on x axis if is enemy piece to mirror player
        {
            theCube.parentCube = Instantiate(shape, spawner.transform.position, Quaternion.Euler(180, 0, 0));
        }

        //So that it appears within canvas
        theCube.parentCube.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, true);
        theCube.parentCube.transform.SetParent(spawner.transform);

        //Off set x pos base on key(index)
        if (key == 0)
        {
            pil.Set(-ScreenWidthOffset + halfOffset, 0, 0);
        }
        else if (key == 1)
        {
            pil.Set(0, 0, 0);
        }
        else
        {
            pil.Set(ScreenWidthOffset - halfOffset, 0, 0);
        }


        //Set the origin (snapping)
        pil1 = theCube.parentCube.transform.position + pil;
        theCube.origin.Set(pil1.x, spawner.transform.position.y, spawner.transform.position.z);
        //Translate to origin
        theCube.parentCube.transform.position = theCube.origin;

        //Store parts locally
        GameObject cubeOne   = theCube.parentCube.transform.Find("partOne").gameObject;
        GameObject cubeTwo   = theCube.parentCube.transform.Find("partTwo").gameObject;
        GameObject cubeThree = theCube.parentCube.transform.Find("partThree").gameObject;
        GameObject cubeFour  = theCube.parentCube.transform.Find("partFour").gameObject;


        //Set up the 4 cubes based on theCube.parentCube's child
        theCube.setTheCubes(cubeOne.GetComponent <Rigidbody2D>(), cubeTwo.GetComponent <Rigidbody2D>(), cubeThree.GetComponent <Rigidbody2D>(), cubeFour.GetComponent <Rigidbody2D>());

        theCube.origin = theCube.partOne.position;

        //Assigning types base on shape
        if (shape == TetrisTypes[0])
        {
            theCube.setTheObjectType(TetrisCube.objectType.TETRIS_4X4);
        }
        else if (shape == TetrisTypes[1])
        {
            theCube.setTheObjectType(TetrisCube.objectType.TETRIS_L);
        }
        else if (shape == TetrisTypes[2])
        {
            theCube.setTheObjectType(TetrisCube.objectType.TETRIS_T);
        }
        else
        {
            theCube.setTheObjectType(TetrisCube.objectType.TETRIS_Z);
        }

        Vector2 currentCubeSIze  = cubeOne.GetComponent <RectTransform>().sizeDelta;
        Vector2 canvasLocalScale = GameObject.FindGameObjectWithTag("Canvas").transform.localScale;

        //Debug.Log(GameObject.FindGameObjectWithTag("Canvas"))

        cubeOne.GetComponent <RectTransform>().sizeDelta   = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y);
        cubeTwo.GetComponent <RectTransform>().sizeDelta   = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y);
        cubeThree.GetComponent <RectTransform>().sizeDelta = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y);
        cubeFour.GetComponent <RectTransform>().sizeDelta  = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y);

        cubeOne.transform.localPosition   = new Vector3(cubeOne.transform.localPosition.x * canvasLocalScale.x, cubeOne.transform.localPosition.y * canvasLocalScale.y, 0);
        cubeTwo.transform.localPosition   = new Vector3(cubeTwo.transform.localPosition.x * canvasLocalScale.x, cubeTwo.transform.localPosition.y * canvasLocalScale.y, 0);
        cubeThree.transform.localPosition = new Vector3(cubeThree.transform.localPosition.x * canvasLocalScale.x, cubeThree.transform.localPosition.y * canvasLocalScale.y, 0);
        cubeFour.transform.localPosition  = new Vector3(cubeFour.transform.localPosition.x * canvasLocalScale.x, cubeFour.transform.localPosition.y * canvasLocalScale.y, 0);


        //Set the unit's type
        switch (type)
        {
        case 0:
        {
            //theCube.troopName = "Cavalry";
            foreach (Transform child in theCube.parentCube.transform)
            {
                Image theSprite = child.GetComponent <Image>();
                if (team == 0)
                {
                    theSprite.sprite  = troopImages[2];
                    theCube.troopName = "BlueCavalry";
                }
                else
                {
                    theSprite.sprite  = troopImages[5];
                    theCube.troopName = "RedCavalry";
                }
            }
            break;
        }

        case 1:
        {
            //theCube.troopName = "Bowmen";
            foreach (Transform child in theCube.parentCube.transform)
            {
                Image theSprite = child.GetComponent <Image>();
                if (team == 0)
                {
                    theSprite.sprite  = troopImages[0];
                    theCube.troopName = "BlueInfantry";
                }
                else
                {
                    theSprite.sprite  = troopImages[3];
                    theCube.troopName = "RedInfantry";
                }
            }
            break;
        }

        case 2:
        {
            foreach (Transform child in theCube.parentCube.transform)
            {
                Image theSprite = child.GetComponent <Image>();
                if (team == 0)
                {
                    theSprite.sprite  = troopImages[1];
                    theCube.troopName = "BlueBowmen";
                }
                else
                {
                    theSprite.sprite  = troopImages[4];
                    theCube.troopName = "RedBowmen";
                }
            }
            break;
        }
        }
        ;

        enemyGridSystem enemyGridSystem = GameObject.Find("EnemyTetrisGrid").GetComponent <enemyGridSystem>();

        if (team == 0 || enemyGridSystem.multi)
        {
            //Could use raycast instead
            //Also cause the only thing changing is the movement function, could try to make a switch instead
            //Trigger and entry for bottom left
            EventTrigger       BtmLTrig  = cubeOne.GetComponent <EventTrigger>();
            EventTrigger.Entry BtmLEntry = new EventTrigger.Entry();
            BtmLEntry.eventID = EventTriggerType.Drag;

            BtmLEntry.callback.AddListener((data) =>
            {
                theCube.DragObject(theCube.partOne);
            });
            BtmLTrig.triggers.Add(BtmLEntry);

            //Trigger and entry for bottom Right
            EventTrigger       BtmRTrig  = cubeTwo.GetComponent <EventTrigger>();
            EventTrigger.Entry BtmREntry = new EventTrigger.Entry();
            BtmREntry.eventID = EventTriggerType.Drag;
            BtmREntry.callback.AddListener((data) =>
            {
                theCube.DragObject(theCube.partTwo);
            });
            BtmRTrig.triggers.Add(BtmREntry);

            //Trigger and entry for top Left
            EventTrigger       TopLTrig  = cubeThree.GetComponent <EventTrigger>();
            EventTrigger.Entry TopLEntry = new EventTrigger.Entry();
            TopLEntry.eventID = EventTriggerType.Drag;
            TopLEntry.callback.AddListener((data) =>
            {
                theCube.DragObject(theCube.partThree);
            });
            TopLTrig.triggers.Add(TopLEntry);

            //Trigger and entry for top Right
            EventTrigger       TopRTrig  = cubeFour.GetComponent <EventTrigger>();
            EventTrigger.Entry TopREntry = new EventTrigger.Entry();
            TopREntry.eventID = EventTriggerType.Drag;
            TopREntry.callback.AddListener((data) =>
            {
                theCube.DragObject(theCube.partFour);
            });
            TopRTrig.triggers.Add(TopREntry);
        }

        //Rotate the cubes back if is enemy (event trigger will not trigger if this is not done for enemy)
        if (team == 1)
        {
            cubeOne.transform.localRotation   = Quaternion.Euler(180, 0, 0);
            cubeTwo.transform.localRotation   = Quaternion.Euler(180, 0, 0);
            cubeThree.transform.localRotation = Quaternion.Euler(180, 0, 0);
            cubeFour.transform.localRotation  = Quaternion.Euler(180, 0, 0);
        }

        //Storing into the respective lists
        if (team == 0)
        {
            //playerList[key] = theCube;
            playerList.Add(theCube);
        }
        else
        {
            //enemyList[key] = theCube;
            enemyList.Add(theCube);
        }

        //Increment index for next object
        ++key;
        return(key);
    }