public void Attack() { menu.value = -1; moveChecker.ClearFree(); moveChecker.CheckAvaliable(this.transform.position, 1); int R = CheckRange(); if (gather.selectedTargetPos.x < this.transform.position.x) { gameObject.transform.localScale = new Vector3(-1, transform.localScale.y); } if (gather.selectedTargetPos.x > this.transform.position.x) { gameObject.transform.localScale = new Vector3(1, transform.localScale.y); } if (moveChecker.IsOccupied(gather.selectedTargetPos.x, gather.selectedTargetPos.y)) { anim.SetTrigger("attackTrigger"); } else if (atri.shooting > 0 && atri.range >= R) { anim.SetTrigger("rangedAttackTrigger"); } else { turnover.SetMessage(("Target out of range"), 0.75f); done = true; } }
private void CalculatePositionToMoveTo() { moveChecker.ClearFree(); moveChecker.CheckAvaliable(currentPlayerPosition, 1); if (moveChecker.IsOccupied(enemys[0].enemyObject.transform.position.x, enemys[0].enemyObject.transform.position.y)) { proposedPos = new Vector2(currentPlayer.transform.position.x, currentPlayer.transform.position.y); } else if (((int)currentPlayerPosition.x + currentPlayer.moves) + currentPlayer.GetComponent <CharacterAtributes>().range >= enemys[0].enemyObject.transform.position.x) { moveChecker.ClearFree(); moveChecker.CheckAvaliable(currentPlayerPosition, currentPlayer.moves); int b = ((int)enemys[0].enemyObject.transform.position.x - (int)currentPlayerPosition.x) - currentPlayer.GetComponent <CharacterAtributes>().range; proposedPos = new Vector2(currentPlayerPosition.x + b, enemys[0].enemyObject.transform.position.y); //if((proposedPos.x == currentPlayerPosition.x)&& enemys[0].enemyObject.transform.position.y == currentPlayerPosition.y) //{ // proposedPos = new Vector2(currentPlayerPosition.x, currentPlayerPosition.y); // } } else { moveChecker.ClearFree(); moveChecker.CheckAvaliable(currentPlayerPosition, currentPlayer.moves); proposedPos = new Vector2(currentPlayerPosition.x + currentPlayer.moves, enemys[0].enemyObject.transform.position.y); // print(currentPlayer.name + " " + enemys[0].enemyName); } MoveToNewPosition(); }
void OnMouseDown() { Vector2 rawPos = CalculateWorldPointOfMouseClick(); roundedPos = SnapToGrid(rawPos); foreach (Player player in players) { if (player.IsMoving) { currentPlayer = player; currentPlayerPosition = player.transform.position; if (moveChecker.IsFree(roundedPos.x, roundedPos.y)) { int m; int n1 = Mathf.Abs((int)player.transform.position.x - (int)roundedPos.x); int n2 = Mathf.Abs((int)player.transform.position.y - (int)roundedPos.y); if (n1 > n2) { m = n1; } else if (n1 < n2) { m = n2; } else { m = n2; } moving = true; player.SetAniBool("isWalking", true); player.moves -= m; moveChecker.ClearFree(); GameObject[] boxes = GameObject.FindGameObjectsWithTag("box"); foreach (GameObject box in boxes) { Destroy(box); } } } } }