//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); }
//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(); } } } } } }
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)); }
public Key(Colors c, pos2D p) { color = c; pos = p; }