void Move() { if (IsFinishReached(wayChanger.Finish) || MovingUtils.IsWayBarricatedByWall(transform.position, direction)) { wayChanger.TryChangeWay(FreeWays(), transform.position); if (wayChanger.IsWayChanged) { direction = GetVectorDirection(direction); } } else { direction = GetVectorDirection(direction); } transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); }
private List <Direction> FreeWays() { List <Direction> result = new List <Direction>(); if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.up)) { result.Add(Direction.up); } if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.up * -1.0f)) { result.Add(Direction.down); } if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.right)) { result.Add(Direction.right); } if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.right * -1.0f)) { result.Add(Direction.left); } return(result); }
void Move() { if (AnyButtonTap()) { wayChanger.TryChangeWay(); } if (MovingUtils.IsWayBarricatedByWall(transform.position, direction)) { if (wayChanger.IsWayChanged) { direction = GetVectorDirection(direction); } else { direction = Vector3.zero; } } else { direction = GetVectorDirection(direction); } transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); }