public override void OnStartTurn() { base.OnStartTurn(); // _bim.locked = true; // switch (state) { case ENTRANCE: { _bui.ShowBossWarningVFX(BOSSWARNING_TIME, GotoNextState); remainTalk = bossTalk_1_num; break; } case STAGE_1: { var t = _bfm.Field.GetRandomTile("Bunker.Game.NormalTile", true); if (t != null) { var robot = _rmm.CreateRobot <RobotThief>(); robot.SetToGird(t.ParentGrid); robotDeployCounter++; _bui.ShowBossTalkingVFX(DIALOG_TIME, dialogues[bossTalk_1_during], null); } break; } case STAGE_2: { MissionManager.getInstance.ConsumeStep(); _bui.ShowBossTalkingVFX(DIALOG_TIME, dialogues[bossTalk_2_during], null); break; } } }
public override void OnStartTurn() { base.OnStartTurn(); //锁住场景操作 _bim.locked = true; //将此关卡载入时的任务系统完成后的回调断开 MissionManager.getInstance.OnMissionValueHandler = null; // switch (state) { case ENTRANCE: //特效 { _bui.ShowBossWarningVFX(BOSSWARNING_TIME, GotoNextState); remainTalk = bossTalk_num; break; } case STAGE_1: //前期唠嗑 break; case STAGE_2: //战斗阶段,在boss回合开始前,进行对小鬼的补充 { int n = _rmm.GetRobotCount(ROBOT_TYPE_NAME); if (n < MAX_GHOST_COUNT) { for (int i = MAX_GHOST_COUNT - n; i > 0; i--) { var t = _bfm.Field.GetRandomTile("Bunker.Game.NormalTile", true); if (t != null) { var robot = _rmm.CreateRobot(ROBOT_TYPE_NAME); robot.SetToGird(t.ParentGrid); } } } // if (curRound == LOCATION_ROUND) { //随机找到特殊格子,及其位置,播放移动动画 Vector2Int rnd = new Vector2Int(UnityEngine.Random.Range(1, 8), 9); dest_tile = _bfm.Field.GetTile(rnd.x, rnd.y); var dest_pos = new Vector3(dest_tile.Node.transform.position.x, boss_body.transform.position.y, boss_body.transform.position.z); boss_body.transform.DOMove(dest_pos, 1.2f).OnComplete(CB_OnFinishMovement); } else if (curRound == CHARGE_ROUND) { //播放枪口处的充能动画 或者是充能特效 boss_body.OnCharge(); CB_OnFinishMovement(); } else if (curRound == LAZER_ROUND) { const float lazer_speed = 30f; const float bias = .5f; //释放lazer float dist_1 = 20; float dist_2 = 20; float dist_1_time = 0; float dist_2_time = 0; //两个起始点,进行向前扫描 var t_1 = _bfm.Field.GetTile(dest_tile.ParentGrid.ColID + 1, dest_tile.ParentGrid.RowID); var t_2 = _bfm.Field.GetTile(dest_tile.ParentGrid.ColID - 1, dest_tile.ParentGrid.RowID); if (t_1 != null) { int grid_x = dest_tile.ParentGrid.ColID + 1; int grid_y = 9; //此处应该是mapsize for (int y = grid_y; y >= 0; y--) { if (CanBlockLazer(grid_x, y)) { var t = _bfm.Field.GetTile(grid_x, y); dist_1 = Mathf.Abs(t.Node.transform.position.y - boss_body.Emiter_1.position.y) + bias; dest_grid_1.Set(grid_x, y); CDebug.Log(string.Format("创建激光[1],距离{0},时间{1} | GRID:{2},{3}", dist_1, dist_1_time, grid_x, y), Constant.COLOR_NAME.ORANGE); break; } } // dist_1_time = dist_1 / lazer_speed; Sequence mySequence = DOTween.Sequence(); mySequence.Append(DOTween.To(CB_Lazer_1_HeightUpdate, 1.5f, dist_1, dist_1_time)) .AppendInterval(.5f).AppendCallback(CB_Lazer_Shoot_Finish); } if (t_2 != null) { int grid_x = dest_tile.ParentGrid.ColID - 1; int grid_y = 9; //此处应该是mapsize for (int y = grid_y; y >= 0; y--) { if (CanBlockLazer(grid_x, y)) { var t = _bfm.Field.GetTile(grid_x, y); dist_2 = Mathf.Abs(t.Node.transform.position.y - boss_body.Emiter_2.position.y) + bias; dest_grid_2.Set(grid_x, y); CDebug.Log(string.Format("创建激光[1],距离{0},时间{1} | GRID:{2},{3}", dist_2, dist_2_time, grid_x, y), Constant.COLOR_NAME.ORANGE); break; } } // dist_2_time = dist_2 / lazer_speed; Sequence mySequence = DOTween.Sequence(); mySequence.Append(DOTween.To(CB_Lazer_2_HeightUpdate, 1.5f, dist_2, dist_2_time)) .AppendInterval(.5f).AppendCallback(CB_Lazer_Shoot_Finish); } // boss_body.OnShoot(); } } break; case STAGE_3: break; } }