/// <summary> /// ユニット指定の受け口 /// </summary> /// <param name="from"></param> /// <param name="to"></param> /// <returns></returns> public MoveDirection GetMoveDirectionToTargetGrid(UnitBaseController from, UnitBaseController to) { return(GetMoveDirectionToTargetGrid( from.GetCharacterMovement().currentGridPosition, to.GetCharacterMovement().currentGridPosition )); }
/// <summary> /// 四近傍のUnitを取得する /// </summary> /// <param name="fromUnitBaseController"></param> /// <returns></returns> public List <UnitBaseController> GetNeighbourUnit(UnitBaseController fromUnitBaseController, bool isEnemyOnly) { List <UnitBaseController> neighbourUnits = new List <UnitBaseController>(); int range = 1; // todo 2マス移動する奴とか想定中 var currentGrid = fromUnitBaseController.GetCharacterMovement().currentGridPosition; // 斜めは除外 for (int x = -range; x <= range; x++) { for (int z = -range; z <= range; z++) { if (x == 0 && z == 0) { continue; } // 4方向に if (x == 0 || z == 0) { var buffer = GridManager.Instance.FindUnitByGrid(new GridPosition( currentGrid.x + x, currentGrid.y, currentGrid.z + z )); if (buffer != null) { if (!isEnemyOnly) { neighbourUnits.Add(buffer); continue; } if (fromUnitBaseController.myTeam != buffer.myTeam) { neighbourUnits.Add(buffer); } } } } } return(neighbourUnits); }