void Start() { tmh = GameObject.Find("Grid").GetComponentInChildren <TilemapHandler>(); cursor = GameObject.Find("Cursor"); br = GameObject.Find("Ball Range"); ma = GameObject.Find("Movement Arrows"); }
void FixedUpdate() { if (turnEnded) { Vector3 dir = TilemapHandler.getTile(targetTile).transform.position - (transform.position - Vector3.up - new Vector3(0.5f, 0.1f)); Vector3 movement = Vector3.zero; if ((dir.x * Vector3.right).sqrMagnitude > 0.02f) { movement = Vector3.right * (dir.x < 0 ? -1 : 1) * 0.1f; } else if ((dir.y * Vector3.up).sqrMagnitude > 0.02f) { movement = Vector3.up * (dir.y < 0 ? -1 : 1) * 0.1f; } else if (kicksBall) { kicksBall = false; GameObject.Find("Ball").GetComponent <BallController>().kick(); } else { turnEnded = false; } transform.position += movement; if (hasBall) { GameObject.Find("Ball").transform.position += movement; } } }
public bool move(TilemapHandler tmh, Vector2Int to) { if (tooFarAway(to)) { return(false); } kicksBall = false; TileHandler onTile = TilemapHandler.getTile(tilePositionOrigin.x, tilePositionOrigin.y).GetComponent <TileHandler>(); if (TilemapHandler.getTile(to).GetComponent <TileHandler>().getCharacter() != null) { if ((to - tilePositionOrigin).y == 0) { to += Vector2Int.right * (((to - tilePositionOrigin).x < 0) ? -1 : 1); } else { to += Vector2Int.up * (((to - tilePositionOrigin).y < 0) ? -1 : 1); } } tmh.moveCharacter(tilePosition, to); if (hasBall = onTile.getHasBall()) { GameObject.Find("Ball").GetComponent <BallController>().owner = transform; GameObject.Find("Ball").transform.position = transform.position - new Vector3(0, 0.5f); } return(true); }
public void reset() { rolling = false; height = 0; TilemapHandler.getTile(TilemapHandler.getTileAtPosition(transform.position)).setHasBall(false); transform.position = startPosition; updatePosition(); }
private void Awake() { if (Instance != null) { Debug.LogError("More than one TilemapHandler!"); } Instance = this; }
public void reset() { TilemapHandler.getTile(tilePositionOrigin).removeCharacter(); TilemapHandler.getTile(tilePositionStart).addCharacter(transform); tilePosition = tilePositionOrigin = targetTile = tilePositionStart; transform.position = TilemapHandler.getTile(tilePositionStart).transform.position + new Vector3(0.5f, 1.1f); turnEnded = false; kicksBall = false; hasBall = false; }
public static void ChangeMask(TilemapHandler tilemapHandler, bool putMask) { foreach (KeyValuePair <Vector3Int, Node> pair in tilemapHandler.nodeTilemap.Nodes) { if (pair.Value.tile.isSlot && pair.Value.isAvailable && putMask) { pair.Value.tile.color = new Color(0f, 56f, 251f, 1f); } else if (pair.Value.tile.isSlot && pair.Value.isAvailable && !putMask) { pair.Value.tile.color = new Color(255f, 255f, 255f, 255f); } } }
public void kick(TilemapHandler tmh, Vector2Int to) { if (!TilemapHandler.getTile(tilePositionOrigin).getHasBall() || outOfKickingRange(to)) { return; } BallController bc = GameObject.Find("Ball").GetComponent <BallController>(); bc.transform.position = TilemapHandler.getTile(to).transform.position + new Vector3(0.5f, 0.5f); bc.destination = to; kicksBall = true; }
void FixedUpdate() { if (rolling) { Vector3 dir = TilemapHandler.getTile(destination).transform.position - transform.position + new Vector3(0.5f, 0.5f); transform.position += new Vector3(dir.x, dir.y).normalized *0.15f; if (dir.sqrMagnitude < 0.15f || (TilemapHandler.getTile(TilemapHandler.getTileAtPosition(transform.position)).containsCharacter() && startRoll != TilemapHandler.getTileAtPosition(transform.position))) { updatePosition(); rolling = false; } } }
public void reset() { TilemapHandler.getTile(tilePositionOrigin).removeCharacter(); TilemapHandler.getTile(tilePositionStart).addCharacter(transform); tilePosition = tilePositionOrigin = targetTile = tilePositionStart; transform.position = TilemapHandler.getTile(tilePositionStart).transform.position + new Vector3(0.5f, 1.1f); turnEnded = false; kicksBall = false; hasBall = false; anim.SetTrigger("Reset"); anim.SetBool("Left", false); anim.SetBool("Right", false); anim.SetBool("Up", false); anim.SetBool("Down", false); }
private void Awake() { characterAnimatorScript = GetComponentInChildren <IsometricCharacterAnimator> (); heroColider = GetComponentInChildren <CapsuleCollider2D> (); heroRigidbody = GetComponent <Rigidbody2D> (); heroTransform = GetComponent <Transform> (); pathFinding = GetComponent <PathFinding> (); targetPosition = heroTransform.position; heroPositionAndState = new PositionAndState(targetPosition, false); tilemapHandler = GameObject.Find("TilemapHandler").GetComponent <TilemapHandler> (); }
public void setupLevel() { TilemapHandler.addPlayer(2, 3, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(5, 3, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(9, 3, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(12, 3, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(6, 5, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(8, 5, Instantiate <GameObject>(player).transform); TilemapHandler.addPlayer(2, 17, Instantiate <GameObject>(enemy).transform); TilemapHandler.addPlayer(5, 17, Instantiate <GameObject>(enemy).transform); TilemapHandler.addPlayer(9, 17, Instantiate <GameObject>(enemy).transform); TilemapHandler.addPlayer(12, 17, Instantiate <GameObject>(enemy).transform); TilemapHandler.addPlayer(6, 15, Instantiate <GameObject>(enemy).transform); TilemapHandler.addPlayer(8, 15, Instantiate <GameObject>(enemy).transform); }
public void updatePosition() { TilemapHandler.clearBall(); tilePosition = TilemapHandler.getTileAtPosition(transform.position); TilemapHandler.getTile(tilePosition).setHasBall(true); if (enemyGoal.GetComponent <Collider2D>().OverlapPoint(transform.position)) { Score.playerScore++; TilemapHandler.reset(); } if (ownGoal.GetComponent <Collider2D>().OverlapPoint(transform.position)) { Score.enemyScore++; TilemapHandler.reset(); } }
public void move(TilemapHandler tmh, Vector2Int to) { if (tooFarAway(to)) { return; } kicksBall = false; TileHandler onTile = TilemapHandler.getTile(tilePositionOrigin.x, tilePositionOrigin.y).GetComponent <TileHandler>(); tmh.moveCharacter(tilePosition, to); if (hasBall = onTile.getHasBall()) { GameObject.Find("Ball").transform.position = transform.position - new Vector3(0, 0.5f); } }
public void tryMove(TilemapHandler tmh, Vector2Int to) { if (!move(tmh, to)) { Vector2Int movement; if (Mathf.Abs(to.x - tilePositionOrigin.x) > speed) { movement = Vector2Int.right * speed * (to.x - tilePositionOrigin.x < 0 ? -1 : 1); } else { movement = Vector2Int.right * (to.x - tilePositionOrigin.x); } movement.y = (speed - Mathf.Abs(to.x - tilePositionOrigin.x)) * (to.y - tilePositionOrigin.y < 0 ? -1 : 1); move(tmh, tilePositionOrigin + movement); } }
public void endTurn() { if (tilePosition != tilePositionOrigin) { transform.position = TilemapHandler.getTile(tilePositionOrigin).transform.position + new Vector3(0.5f, 1.1f); } if (TilemapHandler.getTile(tilePositionOrigin).GetComponent <TileHandler>().getHasBall() && (tilePosition != tilePositionOrigin || kicksBall)) { if (!kicksBall) { TilemapHandler.getTile(tilePosition).GetComponent <TileHandler>().setHasBall(true); } TilemapHandler.getTile(tilePositionOrigin).GetComponent <TileHandler>().setHasBall(false); GameObject.Find("Ball").transform.position = transform.position - new Vector3(0, 0.5f); } tilePositionOrigin = tilePosition; turnEnded = true; targetTile = tilePosition; }
void Awake() { pathFinding = GetComponent <PathFinding>(); tilemapHandler = GameObject.Find("TilemapHandler").GetComponent <TilemapHandler>(); }
public void kick() { rolling = true; startRoll = TilemapHandler.getTileAtPosition(transform.position); }
void Update() { if (!TilemapHandler.hasTurnEnded()) { return; } if (turn == players.player) { Vector3 tile = tmh.roundToTilePosition(Camera.main.ScreenToWorldPoint(Input.mousePosition)); if (selectedTile == null) { cursor.transform.position = tile + new Vector3(0.5f, 0.5f); } else { if (Input.GetButton("Kick")) { cursor.transform.position = tile + new Vector3(0.5f, 0.5f); br.SetActive(true); ma.SetActive(false); isKicking = true; } else { br.SetActive(false); ma.SetActive(true); isKicking = false; generateArrow(tile - GameObject.Find("Playing Area").GetComponent <Tilemap>().origin); } } if (Input.GetButtonDown("Next Round")) { TilemapHandler.endTurn(); selectedTile = null; ma.SetActive(false); selected.SetActive(false); br.GetComponent <Tilemap>().ClearAllTiles(); turn = players.enemy; } if (Input.GetMouseButtonDown(0)) { Vector2Int highlightedTile = TilemapHandler.getTileAtPosition(Camera.main.ScreenToWorldPoint(Input.mousePosition)); if (selectedTile == null) { if (TilemapHandler.getTile(highlightedTile.x, highlightedTile.y).containsPlayer()) { selectedTile = TilemapHandler.getTile(highlightedTile.x, highlightedTile.y); selected.transform.position = selectedTile.transform.position + new Vector3(0.5f, 0.5f); selected.SetActive(true); br.SetActive(true); selectedTile.getCharacter().GetComponent <PlayerHandler>().generateField(); br.transform.position += br.GetComponent <Tilemap>().WorldToCell(selectedTile.getCharacter().transform.position) * new Vector3Int(1, 1, 0) - new Vector3Int(0, 1, 0); br.SetActive(false); } } else if (!isKicking) { if (selectedTile.tilemapPosition != highlightedTile) { selectedTile.getCharacter().GetComponent <PlayerHandler>().move(tmh, highlightedTile); } selectedTile = null; ma.SetActive(false); selected.SetActive(false); br.GetComponent <Tilemap>().ClearAllTiles(); } else { selectedTile.getCharacter().GetComponent <PlayerHandler>().kick(tmh, highlightedTile); selectedTile = null; ma.SetActive(false); selected.SetActive(false); br.GetComponent <Tilemap>().ClearAllTiles(); } } if (Input.GetMouseButtonDown(1)) { selectedTile = null; ma.SetActive(false); selected.SetActive(false); br.GetComponent <Tilemap>().ClearAllTiles(); } } else { List <Transform> enemies = new List <Transform>(); enemies.AddRange(TilemapHandler.enemies); Transform hasBall = null; foreach (Transform enemy in enemies) { PlayerHandler ph = enemy.GetComponent <PlayerHandler>(); if (TilemapHandler.getTile(ph.tilePosition).getHasBall()) { hasBall = enemy; enemies.Remove(enemy); break; } if (!ph.tooFarAway(GameObject.Find("Ball").GetComponent <BallController>().tilePosition)) { ph.move(tmh, GameObject.Find("Ball").GetComponent <BallController>().tilePosition); enemies.Remove(enemy); break; } } //Goal enemies.Sort((p1, p2) => p2.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(7, 20)).CompareTo(p1.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(7, 20)))); enemies[enemies.Count - 1].GetComponent <PlayerHandler>().tryMove(tmh, new Vector2Int(7, 20)); enemies.Remove(enemies[enemies.Count - 1]); //Right enemies.Sort((p1, p2) => p2.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(12, 3)).CompareTo(p1.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(12, 3)))); enemies[enemies.Count - 1].GetComponent <PlayerHandler>().tryMove(tmh, new Vector2Int(12, 3)); enemies.Remove(enemies[enemies.Count - 1]); //Left enemies.Sort((p1, p2) => p2.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(2, 3)).CompareTo(p1.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(2, 3)))); enemies[enemies.Count - 1].GetComponent <PlayerHandler>().tryMove(tmh, new Vector2Int(2, 3)); enemies.Remove(enemies[enemies.Count - 1]); //Middle enemies.Sort((p1, p2) => p2.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(7, 3)).CompareTo(p1.GetComponent <PlayerHandler>().moveDistanceTo(new Vector2Int(7, 3)))); enemies[enemies.Count - 1].GetComponent <PlayerHandler>().tryMove(tmh, new Vector2Int(7, 3)); enemies.Remove(enemies[enemies.Count - 1]); if (hasBall != null) { enemies.Clear(); enemies.AddRange(TilemapHandler.enemies); enemies.Remove(hasBall); enemies.Sort((p1, p2) => p2.GetComponent <PlayerHandler>().moveDistanceTo(hasBall.GetComponent <PlayerHandler>().tilePosition).CompareTo(p1.GetComponent <PlayerHandler>().moveDistanceTo(hasBall.GetComponent <PlayerHandler>().tilePosition))); foreach (Transform player in TilemapHandler.players) { if ((player.GetComponent <PlayerHandler>().tilePosition - hasBall.GetComponent <PlayerHandler>().tilePosition).sqrMagnitude < 4) { hasBall.GetComponent <PlayerHandler>().kick(tmh, enemies[enemies.Count - 1].GetComponent <PlayerHandler>().tilePosition); } } if (!hasBall.GetComponent <PlayerHandler>().outOfKickingRange(new Vector2Int(7, 0))) { hasBall.GetComponent <PlayerHandler>().kick(tmh, new Vector2Int(7, 0)); } } TilemapHandler.endEnemyTurn(); turn = players.player; } }
private void Awake() { tilemapHandler = GameObject.Find("TilemapHandler").GetComponent <TilemapHandler>(); }
void FixedUpdate() { if (turnEnded) { Vector3 dir = TilemapHandler.getTile(targetTile).transform.position - (transform.position - Vector3.up - new Vector3(0.5f, 0.1f)); Vector3 movement = Vector3.zero; if ((dir.x * Vector3.right).sqrMagnitude > 0.02f) { movement = Vector3.right * (dir.x < 0 ? -1 : 1) * 0.1f; anim.SetBool(dir.x < 0 ? "Left" : "Right", true); if (state != animationState.LeftRight) { anim.SetTrigger("Reset"); state = animationState.LeftRight; } } else if ((dir.y * Vector3.up).sqrMagnitude > 0.02f) { movement = Vector3.up * (dir.y < 0 ? -1 : 1) * 0.1f; anim.SetBool(dir.y < 0 ? "Down" : "Up", true); anim.SetBool("Left", false); anim.SetBool("Right", false); if (state != animationState.UpDown) { anim.SetTrigger("Reset"); state = animationState.UpDown; } } else if (kicksBall) { kicksBall = false; GameObject.Find("Ball").GetComponent <BallController>().kick(); } else { if (hasBall) { GameObject.Find("Ball").GetComponent <BallController>().updatePosition(); } turnEnded = false; anim.SetTrigger("Reset"); anim.SetBool("Left", false); anim.SetBool("Right", false); anim.SetBool("Up", false); anim.SetBool("Down", false); } transform.position += movement; if (hasBall) { GameObject.Find("Ball").transform.position += movement; } else if (TilemapHandler.getTile(TilemapHandler.getTileAtPosition(transform.position - Vector3.up * 0.5f)).getHasBall()) { hasBall = true; TilemapHandler.getTile(TilemapHandler.getTileAtPosition(transform.position)).GetComponent <TileHandler>().setHasBall(false); TilemapHandler.getTile(tilePosition).GetComponent <TileHandler>().setHasBall(true); } } }
void Start() { startPosition = transform.position; tmh = GameObject.Find("Playing Area").GetComponent <TilemapHandler>(); Invoke("updatePosition", 0.1f); }