예제 #1
0
        private void ApplyMove(Common.Effect.EffectPlayer player)
        {
            var searcher     = _chara.FindTileDataMap(_mapManager).Seacher;
            var effectEntity = _skill.Effect;

            switch (effectEntity.Range)
            {
            // 足元
            case RangeType.Foot:
            {
                // エフェクトには特に何もしない
            }
            break;

            case RangeType.Line:
            case RangeType.LinePnt:                     // 貫通
            {
                // 壁まで
                var tiles    = searcher.SearchLines(_chara.CellPos, _chara.Model.Dir.Value, Const.TileFlag.Wall);
                var startPos = _chara.CellToWorld(_mapManager);
                var endTile  = tiles.SecondLast();
                if (endTile == null)
                {
                    // null
                }

                var endPos = _chara.CellToWorld(endTile.Pos, _mapManager);
                if (startPos == endPos)
                {
                    // 開始地点と終了地点が同じ場所は何もできない
                    break;
                }

                // 間にあったターゲットを保持する
                foreach (var tile in tiles)
                {
                    var target = _charaManager.FindCharaInPos(_chara.Level, tile.Pos);
                    if (target == null)
                    {
                        continue;
                    }

                    ApplyTarget(target, effectEntity.IsInvolve);
                }

                Common.Effect.IEffectMoveCore move = new Common.Effect.EffectMoveCoreConstantLiner();
                move.SetStartPos(startPos);
                move.SetEndPos(endPos);
                move.SetSpeed(effectEntity.Speed);

                player.Mover.RegisterCore(move);
                player.Mover.SetEase(effectEntity.Ease);
            }
            break;
            }
        }
예제 #2
0
        private void ApplySortingLayer(Common.Effect.EffectPlayer player)
        {
            if (player == null)
            {
                return;
            }

            var changer       = player.gameObject.GetOrAddComponent <Utility.Renderer.SortingLayerChanger>();
            var groundTilemap = _mapManager.FindGroundTilemap(_chara.Level);

            changer.LayerName = groundTilemap.LayerName;
        }