Example #1
0
 /// <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
                ));
 }
Example #2
0
            /// <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);
            }