private void ChangeDirection() { ShuffleDirections(directionList); Vector2 NewDirection = Vector2.zero; foreach (directions direction in directionList) { switch (direction) { case directions.up: { if (pathfinder.CanWalkUp()) { walk.direction = Vector2.up; walk.walkHorizontal = false; return; } break; } case directions.down: { if (pathfinder.CanWalkDown()) { walk.direction = Vector2.down; walk.walkHorizontal = false; return; } break; } case directions.left: { if (pathfinder.CanWalkLeft()) { walk.direction = Vector2.left; walk.walkHorizontal = true; return; } break; } case directions.right: { if (pathfinder.CanWalkRight()) { walk.direction = Vector2.right; walk.walkHorizontal = true; return; } break; } default: break; } } }
private void RecalculateDirection() { Vector2 direction = (player.position - transform.position).normalized; bool walkHorizontal = false; Vector2 DirectionFinal = Vector2.zero; if (Mathf.Abs(direction.x) >= Mathf.Abs(direction.y)) { if (pathfinder.CanWalkLeft() || pathfinder.CanWalkRight()) { walkHorizontal = true; } } if (walkHorizontal == true) { if (direction.x >= 0 && pathfinder.CanWalkRight()) { DirectionFinal.x = 1; } else { DirectionFinal.x = -1; } } else { if (direction.y >= 0 && pathfinder.CanWalkUp()) { DirectionFinal.y = 1; } else { DirectionFinal.y = -1; } } walk.direction = DirectionFinal; walk.walkHorizontal = walkHorizontal; }