public static void MoveUnit(Unit unit, Vector2 b, MoveUnitCompleted callBack = null) { if (unit) { instance.units.Remove(unit.xy); instance.units.Add(b, unit); unit.xy = b; unit.transform.position = unit.xy; } else { Debug.LogFormat("Error: could not find unit at ({0},{1}) to move", unit.x, unit.y); } if (callBack != null) { callBack(); } }
private static IEnumerator MoveUnitAlongPathCoroutine(Unit unit, Vector2 destination, List <Vector2> path, MoveUnitCompleted callBack) { Vector2 startPosition = unit.xy; foreach (Vector2 direction in path) { int frames = 10; for (int i = 0; i < frames; i++) { unit.transform.position += (Vector3)(direction / frames); yield return(new WaitForSeconds(.05f / frames)); } } MoveUnit(startPosition, destination, callBack); }
public static void MoveUnit(Vector2 a, Vector2 b, MoveUnitCompleted callBack = null) { Unit unit = GetUnit(a); MoveUnit(unit, b, callBack); }
public static void MoveUnitAlongPath(Unit unit, Vector2 destination, List <Vector2> path, MoveUnitCompleted callBack) { if (GetUnit(unit.xy) && IsPointInGrid(destination)) { instance.StartCoroutine(MoveUnitAlongPathCoroutine(unit, destination, path, callBack)); } else { callBack(); } }