private GameObject createEntity(int i, int j, Direction.Dir direction, int type, List <Action> script = null, bool repeat = false) { GameObject entity = null; switch (type) { case 0: entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Robot Kyle") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 1.5f, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform); break; case 1: entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Ennemy") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 3, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform); break; case 2: entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Drone") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 5f, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform); break; } entity.GetComponent <Position>().x = i; entity.GetComponent <Position>().z = j; entity.GetComponent <Direction>().direction = direction; ActionManipulator.resetScript(entity.GetComponent <Script>()); if (script != null) { entity.GetComponent <Script>().actions = script; } entity.GetComponent <Script>().repeat = repeat; GameObjectManager.bind(entity); return(entity); }
// Start is called before the first frame update void Start() { base.Init(); //Build a list of directions. Direction.Dir[] dirs = new Direction.Dir[4]; dirs[0] = Direction.Dir.UP; dirs[1] = Direction.Dir.DOWN; dirs[2] = Direction.Dir.LEFT; dirs[3] = Direction.Dir.RIGHT; isAlive = true; //This gives us a random direction dir = dirs[Random.Range(0, dirs.Length)]; //Get the extents top = CollectorGameManager.GetInstance().topExtent; bottom = CollectorGameManager.GetInstance().bottomExtent; left = CollectorGameManager.GetInstance().leftExtent; right = CollectorGameManager.GetInstance().rightExtent; //Decide start pos and movement. float x = Random.Range(left.position.x, right.position.x); float y = Random.Range(bottom.position.y, top.position.y); switch (dir) { case Direction.Dir.UP: { y = bottom.position.y; break; } case Direction.Dir.DOWN: { y = top.position.y; break; } case Direction.Dir.LEFT: { x = right.position.x; break; } case Direction.Dir.RIGHT: { x = left.position.x; break; } default: { y = bottom.position.y; //up by default. break; } } transform.position = new Vector2(x, y); SetMovement(Direction.DirToVec2(dir)); }
private void destroyTilesAndWalls(Vector2 positionScaled, Direction.Dir direction) { Vector2 usePositionScaled = positionScaled + Direction.convertDirToUnitVector2(direction); movedToTile.Invoke(grid.getTileLocation(usePositionScaled)); if (((int)direction / 2) == 0) { usePositionScaled = positionScaled; } if (((int)direction % 2) == 0) { if (grid.hWallInBounds(usePositionScaled)) { if (grid.getHWallState(usePositionScaled)) { movedThroughHWall.Invoke(usePositionScaled); } } } else { if (grid.vWallInBounds(usePositionScaled)) { if (grid.getVWallState(usePositionScaled)) { movedThroughVWall.Invoke(usePositionScaled); } } } }
private void createDoor(int i, int j, Direction.Dir orientation, int slotID) { GameObject door = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Door") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 3, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform); if (orientation == Direction.Dir.West || orientation == Direction.Dir.East) { door.transform.rotation = Quaternion.Euler(0, 90, 0); } door.GetComponent <ActivationSlot>().slotID = slotID; door.GetComponent <Position>().x = i; door.GetComponent <Position>().z = j; door.GetComponent <Direction>().direction = orientation; GameObjectManager.bind(door); }
public void SwitchDirection(Direction.Dir newDir) { switch (newDir) { case Direction.Dir.Up: NewHeadCoord.Y--; break; case Direction.Dir.Right: NewHeadCoord.X++; break; case Direction.Dir.Down: NewHeadCoord.Y++; break; default: NewHeadCoord.X--; break; } }
//0 Forward, 1 Backward, 2 Left, 3 Right public static Direction.Dir getDirection(Direction.Dir dirEntity, int relativeDir) { if (relativeDir == 0) { return(dirEntity); } switch (dirEntity) { case Direction.Dir.North: switch (relativeDir) { case 1: return(Direction.Dir.South); case 2: return(Direction.Dir.West); case 3: return(Direction.Dir.East); } break; case Direction.Dir.West: switch (relativeDir) { case 1: return(Direction.Dir.East); case 2: return(Direction.Dir.South); case 3: return(Direction.Dir.North); } break; case Direction.Dir.East: switch (relativeDir) { case 1: return(Direction.Dir.West); case 2: return(Direction.Dir.North); case 3: return(Direction.Dir.South); } break; case Direction.Dir.South: switch (relativeDir) { case 1: return(Direction.Dir.North); case 2: return(Direction.Dir.East); case 3: return(Direction.Dir.West); } break; } return(dirEntity); }
public void setTransform(Vector2 positionScaled, Direction.Dir direction, float distance) { transform.position = grid.convertScaledToLocal(positionScaled) + (Vector2)grid.transform.position; transform.position += (Vector3)grid.convertScaledToLocal(Direction.convertDirToUnitVector2(direction) * distance); }
void Update() { if (Time.timeScale != 0.0F) { if (Input.GetKeyDown(SHOOT_KEY)) { if (!shooting && !shotHit) { audioSource.clip = playerSounds.shootingSound; audioSource.Play(); shooting = true; StartCoroutine("fireHarpoon"); } if (shotHit & canPump) { audioSource.clip = playerSounds.pumpingSound; audioSource.Play(); enemyHit.GetComponent <BlimpAIMovement>().pumpState++; if (enemyHit.GetComponent <BlimpAIMovement>().pumpState >= 3) { shotHit = false; enemyHit = null; harpoon.transform.localScale = Vector3.zero; } StartCoroutine("pumpCooldownTimer"); } } if (!shooting && !shotHit) { if (onRoute) { Direction.Dir possibleDirection = direction; bool anyKeyPressed = false; for (int i = 0; i < 4; i++) // Determine the direction that the player is pressing in { if (Input.GetKey(KEY_MAP[((int)direction + i) % 4])) // Check the four directions { possibleDirection = (Direction.Dir)(((int)direction + i) % 4); anyKeyPressed = true; } } rotateDirection(); if (anyKeyPressed) { if (!audioSource.isPlaying) { audioSource.clip = playerSounds.walkingSound; audioSource.Play(); } if (possibleDirection != (Direction.Dir)(((int)direction + 2) % 4)) // Non-opposite direction, move { Vector2 oldPosition = positionScaled; if (grid.tileInBounds(grid.getTileLocation(getNextPosition()))) { if (moveInDirection(Direction.passingTileOrWall(positionScaled, direction, grid) ? speedDig : speedReg)) { destroyTilesAndWalls(oldPosition, direction); direction = possibleDirection; } } else { onRoute = false; } } else // Opposite direction, turn around and don't move { positionScaled += Direction.convertDirToUnitVector2(direction); direction = possibleDirection; distance = 1.0F - distance; } } else { if (audioSource.isPlaying) { audioSource.Pause(); } } } else { for (int i = 0; i < 4; i++) // Determine the direction that the player is pressing in { if (Input.GetKey(KEY_MAP[((int)direction + i) % 4])) // Check the four directions { direction = (Direction.Dir)(((int)direction + i) % 4); onRoute = true; } } } } } }