Пример #1
0
 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();
     }
 }
Пример #2
0
    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);
    }
Пример #3
0
    public static void MoveUnit(Vector2 a, Vector2 b, MoveUnitCompleted callBack = null)
    {
        Unit unit = GetUnit(a);

        MoveUnit(unit, b, callBack);
    }
Пример #4
0
 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();
     }
 }