Example #1
0
    //Create Floor Map Based on FloorSpots Object
    public Transform[,] mapFloor()
    {
        //Rows
        Transform[] rows = new Transform[FloorSpots.childCount];
        int         rx   = 0; foreach (Transform row in FloorSpots)
        {
            rows[rx] = row; rx++;
        }

        //Init Output Multi-Array
        pos2D maxMap = new pos2D(0, 0);

        foreach (Transform row in rows)
        {
            if (row.childCount > maxMap.y)
            {
                maxMap.y = row.childCount;
            }
        }
        for (int i = 0; i < maxMap.y; i++)
        {
            int m = 0; foreach (Transform row in rows)
            {
                if (i < row.childCount)
                {
                    m++;
                }
            }
            if (m > maxMap.x)
            {
                maxMap.x = m;
            }
        }
        Transform[,] map = new Transform[maxMap.x, maxMap.y];

        //Populate Multi-Array by Mapping
        int r = 0;

        //float rr=0f;float pp=0f;
        foreach (Transform row in rows)
        {
            int s = 0;
            //row.position=new Vector3(rr,0,0);rr+=0.7f;
            foreach (Transform plate in row)
            {
                if (plate.gameObject.activeInHierarchy)
                {
                    //plate.position=new Vector3(plate.position.x,plate.position.y,pp);pp+=0.7f;
                    map[r, s] = plate;
                    //plate.Translate(Vector3.up * Random.Range(0.2f,1.5f), Space.World);
                }
                s++;
            }                //pp=0f;
            r++;
        }

        //Returns Map
        Debug.Log(map.GetLength(0) + "/" + map.GetLength(1));
        return(map);
    }
Example #2
0
    //Moves...
    private void movePlayer(pos2D move)
    {
        pos2D tempPos = playerPos;

        tempPos.x += move.x;
        tempPos.y += move.y;

        //Test if Valid Spot in Array
        if (floorSpots.GetLength(0) > tempPos.y && tempPos.y >= 0 &&
            floorSpots.GetLength(1) > tempPos.x && tempPos.x >= 0 &&
            getTilePos(tempPos.x, tempPos.y, raycasYOffset) != Vector3.zero)
        {
            Vector3    orig         = new Vector3(Player.position.x, raycasYOffset, Player.position.z);
            Vector3    directionRay = getTilePos(tempPos.x, tempPos.y, raycasYOffset) - orig;
            RaycastHit hit;
            Debug.DrawRay(orig, directionRay * 0.5f, Color.blue, 10f);
            if (Physics.Raycast(orig, directionRay, out hit, 0.5f) &&
                hit.collider.GetComponent <Blockade>() != null)
            {
                shake(move.x == 0);
            }
            else
            {
                playerPos = tempPos;
            }
            PlayAnimation(EAnimations.Jump);
            StartCoroutine(HandleJumpHeight());
        }
        else
        {
            shake(move.x == 0);
        }

        //Check if Player Hits EndPortal
        if (playerPos == EndPos)
        {
            Debug.Log("Level Complete!!!");
            GetComponent <LevelManager>().loadNextLevel();
        }
        //Check if Player Hits Key
        if (keysPos.Length > 0)
        {
            foreach (Key key in keysPos)
            {
                if (playerPos == key.pos)
                {
                    foreach (GameObject door in doorsPos)
                    {
                        Door d = door.GetComponent <Door>();
                        if (d.color == key.color)
                        {
                            d.trigger();
                        }
                    }
                }
            }
        }
    }
Example #3
0
 public Vector3 SetBoard(Transform board, pos2D startPos, pos2D endPos)
 {
     FloorSpots = board;
     floorSpots = mapFloor();
     playerPos  = startPos;
     setPlayerPos(playerPos.x, playerPos.y);
     EndPos = endPos;
     return(getTilePos(endPos.x, endPos.y, 0.164f));
 }
Example #4
0
 public Key(Colors c, pos2D p)
 {
     color = c; pos = p;
 }