public void CreateNextTile() { // Create new snake Tile SnakeTile newSnakeTile = Instantiate(snakePrefab).GetComponent <SnakeTile>(); // Set parent to Snake holder newSnakeTile.transform.SetParent(transform); // Change scale to 1 newSnakeTile.transform.localScale = new Vector3(1, 1, 1); // Set RT world position relative to last snake tile - head if (head != null) { Vector2Int index = GetPositionToCreateTile(); BoardTile bt = Board.instance.GetBoardTile(index); newSnakeTile.SetPositionToBoard(bt); head.DisableRigidbody(); } else { newSnakeTile.SetPositionToBoard(Board.instance.GetFirstTilePosition()); } SnakeTile snakeTile = newSnakeTile.GetComponent <SnakeTile>(); head = snakeTile; tilesList.Add(snakeTile); currentSnakeLength++; }
void AddPiece() { SnakeTile snakeTile = Instantiate(snakeTilePrefab, transform.position, Quaternion.identity); snakeTile.transform.parent = transform; snakeTile.MoveToTile(snakePieces[snakePieces.Count - 1]); switch (PlayerInput.Dir) { case PlayerInput.Direction.Up: snakeTile.MoveDown(); break; case PlayerInput.Direction.Down: snakeTile.MoveUp(); break; case PlayerInput.Direction.Left: snakeTile.MoveRight(); break; case PlayerInput.Direction.Right: snakeTile.MoveLeft(); break; default: break; } snakePieces.Add(snakeTile); }
void RemoveTail() { SnakeTile st = tilesList.First(); tilesList.Remove(st); st.RemoveTail(); currentSnakeLength--; }
//Teleports the player to a tile further back if they land on a snake tile (numSpacesBack determined by snakeTile script) void MovePlayerBack() { snake = waypoints[currentWaypointID].GetComponent <SnakeTile>(); //Set the new start point for next turn currentWaypointID = currentWaypointID - snake.numSpacesBack; startingWaypointID = currentWaypointID; endWaypointID = currentWaypointID; navMeshAgent1.transform.position = waypoints[currentWaypointID].transform.position; print("new player 1 starting point: " + startingWaypointID); print("player 1 current point: " + currentWaypointID); print("endWaypointID: " + endWaypointID); }
private void CheckIfSnakeOnApple() { SnakeTile tileAtHead = _snake.GetHead(); var gridTile = GridManager.Instance.GetTileAt(tileAtHead.GridPos.x, tileAtHead.GridPos.y); if (gridTile == null) { return; } if (gridTile.HasApple) { SnakeOnApple(gridTile); SpawnApple(); } }
public void Restart() { isAlive = true; head = null; tilesList.Clear(); }