/// <summary> /// 获取击飞落脚点 /// </summary> /// <param name="Dir">方向</param> public static Vector3 GetHitFlyEndPoint(Vector3 pos, WalkDir Dir, bool bearhit) { if (Dir == WalkDir.WALKLEFT) { if (m_SeaEnviron != null) { if (!bearhit) { return(m_SeaEnviron.LeftHitFlyPoint.transform.position); } ShipCanvasInfo shipinfo = GetShipBodyMap(); Vector3 flypos = m_SeaEnviron.LeftHitFlyPoint.transform.position; flypos.x = pos.x - shipinfo.width * MapGrid.m_UnitRoomGridNum * MapGrid.m_width * 0.5f; flypos.y -= 10; return(flypos); } } else if (Dir == WalkDir.WALKRIGHT) { if (m_SeaEnviron != null) { if (!bearhit) { return(m_SeaEnviron.RightHitFlyPoint.transform.position); } ShipCanvasInfo shipinfo = GetShipBodyMap(); Vector3 flypos = m_SeaEnviron.RightHitFlyPoint.transform.position; flypos.x = pos.x + shipinfo.width * MapGrid.m_UnitRoomGridNum * MapGrid.m_width * 0.5f; flypos.y -= 10; return(flypos); } } return(Vector3.zero); }
/// <summary> /// 获取选择的战斗方案 /// </summary> public void GetShipCansInfoPlan(ref ShipCanvasInfo CanvasInfo, ref List <SoldierInfo> lSoldier, ref List <ShipPutInfo> lBuild) { if (lSoldier == null) { lSoldier = new List <SoldierInfo>(); } if (lBuild == null) { lBuild = new List <ShipPutInfo>(); } CanvasInfo = Canvans; foreach (ShipPutInfo Info in m_Soldiers) { SoldierInfo s = new SoldierInfo(); if (Info.GetSoldier(ref s) == true && s != null) { lSoldier.Add(s); } } lBuild.AddRange(m_RoomBuildings); lBuild.AddRange(m_StairBuildings); }
public static void SetDefenseMap(ShipCanvasInfo Info) { m_CanvansInfo.EmptyMapArea(); if (Info != null) { m_CanvansInfo.SetMapData(Info.width, Info.height, Info.map, Info.shape, Info.skin, Info.environment); } }
//设置爆炸地图 public static void SetBombMap(ShipCanvasInfo Info) { ClearBombData(); if (Info == null) { return; } Int2 StartPos = Int2.zero; List <Int2> lLinkPos = new List <Int2>(); //LeftUp Info.GetMapAreaRoom(MapArea.LeftUp, ref StartPos, ref lLinkPos); BombArea bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.LeftUp, bombarea); //RightDown Info.GetMapAreaRoom(MapArea.RightDown, ref StartPos, ref lLinkPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.RightDown, bombarea); //LeftDown Info.GetMapAreaRoom(MapArea.LeftDown, ref StartPos, ref lLinkPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.LeftDown, bombarea); //RightUp Info.GetMapAreaRoom(MapArea.RightUp, ref StartPos, ref lLinkPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.RightUp, bombarea); //LeftMiddle Info.GetMapAreaRoom(MapArea.LeftMiddle, ref StartPos, ref lLinkPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.LeftMiddle, bombarea); //RightMiddle Info.GetMapAreaRoom(MapArea.RightMiddle, ref StartPos, ref lLinkPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.Middle; bombarea.SetArea(StartPos, lLinkPos); m_BombRoad.Add(BombRoad.RightMiddle, bombarea); //Middle Info.GetMapAreaRoom(MapArea.Middle, ref StartPos, ref lLinkPos); List <List <Int2> > lCenterPos = new List <List <Int2> >(); Info.GetMapCenterAreaRoom(ref lCenterPos); bombarea = new BombArea(); bombarea.ProcessType = BombProcessType.End; bombarea.SetArea(StartPos, lLinkPos); bombarea.SetCenterArea(lCenterPos); m_BombRoad.Add(BombRoad.Middle, bombarea); }
public void Copy(ShipCanvasInfo s) { this.width = s.width; this.height = s.height; this.shift_cx = s.shift_cx; this.shift_cy = s.shift_cy; this.map = s.map; this.shape = s.shape; this.skin = s.skin; this.environment = s.environment; }
public static void CutLine(int layer, int unit, bool bLeft) { ShipCanvasInfo shipinfo = CmCarbon.GetDefenseMap(); MapGrid g = GetMG(layer, unit); if (g != null) { if (bLeft) { if (g.Left != null) { g.Left.Right = null; } g.Left = null; } else { if (g.Right != null) { g.Right.Left = null; } g.Right = null; } for (int i = 0; i < unit; i++) { MapGrid left = GetMG(layer, i); MapGrid righttop = left.m_NpNearestStation[(int)NearestStationDir.NSD_RIGHTTOP]; if (righttop != null && righttop.GridPos.Unit >= unit) { left.m_NpNearestStation[(int)NearestStationDir.NSD_RIGHTTOP] = null; } MapGrid rightdown = left.m_NpNearestStation[(int)NearestStationDir.NSD_RIGHTDOWN]; if (rightdown != null && rightdown.GridPos.Unit >= unit) { left.m_NpNearestStation[(int)NearestStationDir.NSD_RIGHTDOWN] = null; } } for (int i = unit + 1; i < (shipinfo.width * MapGrid.m_UnitRoomGridNum - 1); i++) { MapGrid right = GetMG(layer, i); MapGrid lefttop = right.m_NpNearestStation[(int)NearestStationDir.NSD_LEFTTOP]; if (lefttop != null && lefttop.GridPos.Unit <= unit) { right.m_NpNearestStation[(int)NearestStationDir.NSD_LEFTTOP] = null; } MapGrid leftdown = right.m_NpNearestStation[(int)NearestStationDir.NSD_LEFTDOWN]; if (leftdown != null && leftdown.GridPos.Unit <= unit) { right.m_NpNearestStation[(int)NearestStationDir.NSD_LEFTDOWN] = null; } } } }
/// <summary> /// 加载战斗地图 /// </summary> private static void LoadCombatMap() { ShipCanvasInfo Info = CmCarbon.GetDefenseMap(); if (Info != null) { Info.GetMapData(); BattleEnvironmentM.ResetStartPos(Info.GetMapSize(), true); MapM.CreateMap(Info); ShipBombRule.SetBombMap(Info); } }
public static void BuildViewStageScene() { CounterPartInfo Info = StageDC.GetCounterPartInfo(); ShipCanvasInfo Map = StageM.GetCounterPartMap(Info.countershipcanvasid); List <SoldierInfo> lSoldier = new List <SoldierInfo>(); List <BuildInfo> lBuild = new List <BuildInfo>(); StageM.GetCounterPartShipPut(Info.id, ref lSoldier, ref lBuild); CmCarbon.SetDefenseMap(Map); GenerateShip.GenerateShips(GetShipBodyMap(), GetLifeMBornNode(true), lBuild, lSoldier); MainCameraM.s_Instance.ResetCameraDataByBattle(); }
/// <summary> /// 创建地图 /// </summary> public static void CreateMap(ShipCanvasInfo Info) { ClearMap(); if (Info != null) { CreateMap(Info.MapSizeData, Info.HoleData, Info.AttackData); } else { Debug.LogError("ShipCanvansInfo is null 请调查"); } }
public static bool IsEqual(ShipCanvasInfo a, ShipCanvasInfo b) { if (a == null || b == null) { return(false); } bool isEqual = false; if (a.shift_cx == b.shift_cx && a.shift_cy == b.shift_cy) { isEqual = true; } return(isEqual); }
void ClickCombat(UIButton sender) { CounterPartInfo Info = StageDC.GetCounterPartInfo(); if (Info == null) { return; } if (m_type != StageType.Normal) { int Times = StageDC.GetPassStageTimes(m_type, m_stageid); if (Times >= Info.times) { NGUIUtil.ShowTipWndByKey("88800031", 2); return; } } if (StageDC.GetPveMode() == PVEMode.Defense) { SoundPlay.PlayBackGroundSound("bgm_battle_loop", true, false); ShipCanvasInfo Canvas = new ShipCanvasInfo(); List <SoldierInfo> lSoldier = new List <SoldierInfo>(); List <ShipPutInfo> lBuild = new List <ShipPutInfo>(); ShipPlanDC.SetCurShipPlan(PlanType.Default); ShipPlan Plan = ShipPlanDC.GetCurShipPlan(); Plan.GetShipCansInfoPlan(ref Canvas, ref lSoldier, ref lBuild); CmCarbon.SetDefenseMap(Canvas); CmCarbon.SetDefenseBuild(lBuild); CmCarbon.SetDefenseSoldier(lSoldier); CmCarbon.SetDefenseFloor(UserDC.GetDeckLevel()); CmCarbon.SetDefenseUserInfo(Info, null); List <int> l = new List <int>(); foreach (SoldierInfo s in lSoldier) { l.Add(s.ID); } sender.enabled = false; //DataCenter.RegisterHooks((int)gate.Command.CMD.CMD_702, CanCombat); //StageDC.SendStageAttackRequest(m_stageid, l, 0); SceneM.Load(CombatScene.GetSceneName(), false, false); } else { sender.enabled = false; //SoldierDC.Send_SoldierBattleListRequest(0); //DataCenter.RegisterHooks((int)gate.Command.CMD.CMD_214, LoadStage); SceneM.Load(CombatScene.GetSceneName(), false, false); } }
/// <summary> /// 建造建筑物的等级限制 /// </summary> public ShipCanvasInfo GetBuildCanvasInfo() { ShipCanvasInfo buildMap = new ShipCanvasInfo(); //m_Shape if (m_Shape != null) { buildMap.SetMapData(m_Shape.width, m_Shape.height, m_Shape.map, m_Shape.shape); } else { Debug.Log("building shape is null"); } return(buildMap); }
/// <summary> /// 创建船体骨架 /// </summary> private static ShipCanvasInfo GetShipBodyMap() { List <StairInfo> lStair = new List <StairInfo>(); CmCarbon.GetStairInfo(ref lStair); ShipCanvasInfo Info = new ShipCanvasInfo(); Info.Copy(CmCarbon.GetDefenseMap()); List <Int2> lCutMapPoint = new List <Int2> (); foreach (StairInfo I in lStair) { //裁剪掉上层 lCutMapPoint.Add(new Int2(I.Up.Unit / MapGrid.m_UnitRoomGridNum, I.Up.Layer)); } Info.SetStairMap(lCutMapPoint, XYmode.Save2Edit); return(Info); }
/// <summary> /// 加入战役战斗,填充战役相关数据。 /// </summary> public static bool JoinCompaignBattle() { m_CounterPartPutSoldier.Clear(); m_CounterPartEnemys.Clear(); m_CounterPartPutBulid.Clear(); m_CounterPartInfo = StageM.GetCounterPartInfo(m_stageid); if (m_CounterPartInfo != null) { SetStageReward(m_stageid); //战斗模式 if (m_CounterPartInfo.mode == 0) { m_CounterPartMap = StageM.GetCounterPartMap(m_CounterPartInfo.countershipcanvasid); StageM.GetCounterPartShipPut(m_stageid, ref m_CounterPartPutSoldier, ref m_CounterPartPutBulid); //加入战斗 CmCarbon.ReadyCombat(); CmCarbon.SetDefenseMap(m_CounterPartMap); CmCarbon.SetDefenseBuild(m_CounterPartPutBulid); CmCarbon.SetPVEMonisterSoldier(m_CounterPartPutSoldier); CmCarbon.SetDefenseFloor(m_CounterPartInfo.decklevel); CmCarbon.SetDefenseUserInfo(m_CounterPartInfo, m_CounterPartPutBulid); } else //防守模式 //StageM.GetCounterPartShipPut(m_stageid , ref m_CounterPartPutSoldier , ref m_CounterPartPutBulid); { StageM.GetCounterPartShipPut(m_stageid, ref m_CounterPartEnemys, ref m_CounterPartPutBulid); //加入战斗 CmCarbon.ReadyCombat(); CmCarbon.SetAttackSoldier(m_CounterPartEnemys); } if (GetPassStageStar(m_type, m_stageid) == 0 /*&& GetPassStageTimes (m_type ,m_stageid) == 0*/) { CmCarbon.SetStartTalk(m_CounterPartInfo.m_StageStartTalk); CmCarbon.SetEndTalk(m_CounterPartInfo.m_StageEndTalk); } return(true); } return(false); }
public void ResetCameraDataByBattle() { //场景最大画面为船高(船层+2)*3.3f占屏7/12时 //场景最大画面时,0面占屏幕的纵横世界长度 Camera cam = Camera.main; ShipCanvasInfo Info = CmCarbon.GetDefenseMap(); Int2 Start = Info.GetMapSize(); float fZeroHeight = (Start.Layer + 2) * 3.3f * 12f / 7f; //0面占屏幕高度 float fZeroWidth = fZeroHeight * s_aspect; //0面占屏幕宽度 float fBoatHeight = (Start.Layer + 1f) * 3.3f; //船高 float fBoatWidth = Start.Unit * 3.0f; //船宽 if (fZeroWidth < (Start.Unit + 2) * 3.0f) { fZeroWidth = (Start.Unit + 2) * 3.0f; fZeroHeight = fZeroWidth / s_aspect; } float fMaxZeroHeight = fZeroHeight + fBoatHeight; //最大场景0面对应的高度 float fMaxZeroWidth = fZeroWidth + fBoatWidth; //最大场景0面对应的高度 float zoomPyramid_S = -CalcCameraLimitZBySWH(fMaxZeroHeight, s_fov); //锥体顶点 cam.transform.position = new Vector3(0, (fMaxZeroHeight - fZeroHeight) / 2.0f + 3f, zoomPyramid_S); //最大场景显示时的相机位置 float zoomPyramid_H = -CalcCameraLimitZBySWH(fZeroHeight, s_fov); //锥体高点坐标 float zoomPyramid_O = -CalcCameraLimitZBySWH(9f, s_fov); //锥体底点坐标 AreaLimitPyramid reaLimitPyramid = new AreaLimitPyramid(); reaLimitPyramid.m_vTopL = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); reaLimitPyramid.m_vTopR = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); reaLimitPyramid.m_vBottomLT = cam.ViewportToWorldPoint(new Vector3(0, 1, zoomPyramid_O - zoomPyramid_S)); reaLimitPyramid.m_vBottomLB = cam.ViewportToWorldPoint(new Vector3(0, 0, zoomPyramid_O - zoomPyramid_S)); reaLimitPyramid.m_vBottomRT = cam.ViewportToWorldPoint(new Vector3(1, 1, zoomPyramid_O - zoomPyramid_S)); reaLimitPyramid.m_vBottomRB = cam.ViewportToWorldPoint(new Vector3(1, 0, zoomPyramid_O - zoomPyramid_S)); reaLimitPyramid.m_fZDeep = zoomPyramid_H; reaLimitPyramid.m_fxRightDeep = fBoatWidth / 2f; reaLimitPyramid.m_fxLeftDeep = -fBoatWidth / 2f; reaLimitPyramid.m_fYBTopDeep = fBoatHeight + 3f; reaLimitPyramid.m_fYBottomDeep = 3; m_cameraGesture.SetCameraLimitParam(reaLimitPyramid); float fBottom = fZeroHeight / 4f + 3.0f; //屏幕底往上1/4处为船底坐标位置 s_vBattleFarthestCamPos = new Vector3(0f, fBottom, zoomPyramid_H); fZeroHeight = (Start.Layer + 1) * 3.3f * 20f / 13f; //船占高度的7/12 fZeroWidth = fZeroHeight * s_aspect; if (fZeroWidth < Start.Unit * 3.0f) { fZeroWidth = Start.Unit * 3.0f; fZeroHeight = fZeroWidth / s_aspect; } float zoomBoatviewZ = -CalcCameraLimitZBySWH(fZeroHeight, s_fov); fBottom = fZeroHeight / 4f + 3.0f; //屏幕底往上1/4处为船底坐标位置 s_vBattleBoatviewCamPos = new Vector3(0f, fBottom, zoomBoatviewZ); cam.transform.position = new Vector3(s_vBattleFarthestCamPos.x, s_vBattleFarthestCamPos.y, s_vBattleFarthestCamPos.z); //ScreenManager.onScreenSizeChanged = OnScreenSizeChange; FlyZone(); if (CmCarbon.GetCamp2Player(LifeMCamp.ATTACK) == false) { NGUIUtil.DebugLog("被怪物打"); } else { MainCameraM.s_Instance.AutoMoveTo(MainCameraM.s_vBattleBoatviewCamPos, 0.7f); } }
//避风港 public void ResetCameraDataByHaven() { Camera cam = Camera.main; Vector3 posTemp = new Vector3(cam.transform.position.x, cam.transform.position.y, cam.transform.position.z); //主场景最大画面,目前定死 //主场景场景最大画面时,0面占屏幕的纵横世界长度 float zoomPyramid_S = -267.6354f; //锥体顶点 float zPosBackGround = 0f; //最后面背景所在的位置 cam.transform.position = new Vector3(0, 13.09499f, zoomPyramid_S); Vector3 posScreenCenterWorldB = cam.ViewportToWorldPoint(new Vector3(1.0f, 0f, zPosBackGround - zoomPyramid_S)); Vector3 posScreenLeftWorldB = cam.ViewportToWorldPoint(new Vector3(0f, 0f, zPosBackGround - zoomPyramid_S)); float fWidthBackGroundScreen = posScreenCenterWorldB.x - posScreenLeftWorldB.x; float zoomLimitMinX = -86f + fWidthBackGroundScreen / 2f; float zoomLimitMaxX = 0;//28f-fWidthBackGroundScreen/2f; s_vHavenViewFarthestCamPos = new Vector3(-28.0f, 13.09499f, zoomPyramid_S); cam.transform.position = new Vector3(s_vHavenViewFarthestCamPos.x, s_vHavenViewFarthestCamPos.y, zoomPyramid_S); float zoomPyramid_O = -CalcCameraLimitZBySWH(9f, s_fov); s_reaLimitPyramidHavenView = s_reaLimitPyramidHavenView != null ? s_reaLimitPyramidHavenView : new AreaLimitPyramid(); s_reaLimitPyramidHavenView.m_vTopL = new Vector3(zoomLimitMinX, s_vHavenViewFarthestCamPos.y, zoomPyramid_S); s_reaLimitPyramidHavenView.m_vTopR = new Vector3(zoomLimitMaxX, s_vHavenViewFarthestCamPos.y, zoomPyramid_S); cam.transform.position = new Vector3(zoomLimitMinX, s_vHavenViewFarthestCamPos.y, zoomPyramid_S); s_reaLimitPyramidHavenView.m_vBottomLT = cam.ViewportToWorldPoint(new Vector3(0, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidHavenView.m_vBottomLB = cam.ViewportToWorldPoint(new Vector3(0, 0, zoomPyramid_O - zoomPyramid_S)); cam.transform.position = new Vector3(zoomLimitMaxX, s_vHavenViewFarthestCamPos.y, zoomPyramid_S); s_reaLimitPyramidHavenView.m_vBottomRT = cam.ViewportToWorldPoint(new Vector3(1, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidHavenView.m_vBottomRB = cam.ViewportToWorldPoint(new Vector3(1, 0, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidHavenView.m_fZDeep = zoomPyramid_S; s_reaLimitPyramidHavenView.m_fxRightDeep = s_reaLimitPyramidHavenView.m_vBottomRT.x; s_reaLimitPyramidHavenView.m_fxLeftDeep = s_reaLimitPyramidHavenView.m_vBottomLT.x; s_reaLimitPyramidHavenView.m_fYBTopDeep = s_reaLimitPyramidHavenView.m_vBottomLT.y; s_reaLimitPyramidHavenView.m_fYBottomDeep = s_reaLimitPyramidHavenView.m_vBottomRB.y; //编辑船时最大场景画面 Int2 Start = Int2.zero; ShipPlan p = ShipPlanDC.GetCurShipPlan(); if (p != null) { ShipCanvasInfo Canvans = p.Canvans; Start = Canvans.GetMapSize(); } float fZeroHeight = (Start.Layer + 2) * 3.3f * 12f / 7f; //船占高度的7/12 float fZeroWidth = fZeroHeight * s_aspect; float fBoatHeight = (Start.Layer + 1f) * 3.3f; //船高 float fBoatWidth = Start.Unit * 3.0f; //船宽 if (fZeroWidth < (Start.Unit + 2) * 3.0f) { fZeroWidth = (Start.Unit + 2) * 3.0f; fZeroHeight = fZeroWidth / s_aspect; } float fMaxZeroHeight = fZeroHeight + fBoatHeight; //最大场景0面对应的高度 float fMaxZeroWidth = fZeroWidth + fBoatWidth; //最大场景0面对应的高度 zoomPyramid_S = -CalcCameraLimitZBySWH(fMaxZeroHeight, s_fov); //锥体顶点 cam.transform.position = new Vector3(0, (fMaxZeroHeight - fZeroHeight) / 2.0f + 3f, zoomPyramid_S); //最大场景显示时的相机位置 float zoomPyramid_H = -CalcCameraLimitZBySWH(fZeroHeight, s_fov); //锥体高点坐标 zoomPyramid_O = -CalcCameraLimitZBySWH(9f, s_fov); //锥体底点坐标 s_reaLimitPyramidBoatView = s_reaLimitPyramidBoatView != null ? s_reaLimitPyramidBoatView : new AreaLimitPyramid(); s_reaLimitPyramidBoatView.m_vTopL = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); s_reaLimitPyramidBoatView.m_vTopR = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); s_reaLimitPyramidBoatView.m_vBottomLT = cam.ViewportToWorldPoint(new Vector3(0, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidBoatView.m_vBottomLB = cam.ViewportToWorldPoint(new Vector3(0, 0, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidBoatView.m_vBottomRT = cam.ViewportToWorldPoint(new Vector3(1, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidBoatView.m_vBottomRB = cam.ViewportToWorldPoint(new Vector3(1, 0, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidBoatView.m_fZDeep = zoomPyramid_H; s_reaLimitPyramidBoatView.m_fxRightDeep = fBoatWidth / 2f; s_reaLimitPyramidBoatView.m_fxLeftDeep = -fBoatWidth / 2f; s_reaLimitPyramidBoatView.m_fYBTopDeep = fBoatHeight + 3f; s_reaLimitPyramidBoatView.m_fYBottomDeep = 3f; float fBottom = fZeroHeight / 4f + 3.0f; //屏幕底往上1/4处为船底坐标位置 s_vHavenViewBoatviewCamPos = new Vector3(0f, fBottom, zoomPyramid_H); Start = new Int2(8, 4); fZeroHeight = (Start.Layer + 2) * 3.3f * 12f / 7f; //船占高度的7/12 fZeroWidth = fZeroHeight * s_aspect; fBoatHeight = (Start.Layer + 1f) * 3.3f; //船高 fBoatWidth = Start.Unit * 3.0f; //船宽 if (fZeroWidth < (Start.Unit + 2) * 3.0f) { fZeroWidth = (Start.Unit + 2) * 3.0f; fZeroHeight = fZeroWidth / s_aspect; } fMaxZeroHeight = fZeroHeight + fBoatHeight; //最大场景0面对应的高度 fMaxZeroWidth = fZeroWidth + fBoatWidth; //最大场景0面对应的高度 zoomPyramid_S = -CalcCameraLimitZBySWH(fMaxZeroHeight, s_fov); //锥体顶点 cam.transform.position = new Vector3(0, (fMaxZeroHeight - fZeroHeight) / 2.0f + 3f, zoomPyramid_S); //最大场景显示时的相机位置 zoomPyramid_H = -CalcCameraLimitZBySWH(fZeroHeight, s_fov); //锥体高点坐标 zoomPyramid_O = -CalcCameraLimitZBySWH(9f, s_fov); //锥体底点坐标 s_reaLimitPyramidEditView = s_reaLimitPyramidEditView != null ? s_reaLimitPyramidEditView : new AreaLimitPyramid(); s_reaLimitPyramidEditView.m_vTopL = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); s_reaLimitPyramidEditView.m_vTopR = new Vector3(cam.transform.position.x, cam.transform.position.y, zoomPyramid_S); s_reaLimitPyramidEditView.m_vBottomLT = cam.ViewportToWorldPoint(new Vector3(0, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidEditView.m_vBottomLB = cam.ViewportToWorldPoint(new Vector3(0, 0, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidEditView.m_vBottomRT = cam.ViewportToWorldPoint(new Vector3(1, 1, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidEditView.m_vBottomRB = cam.ViewportToWorldPoint(new Vector3(1, 0, zoomPyramid_O - zoomPyramid_S)); s_reaLimitPyramidEditView.m_fZDeep = zoomPyramid_H; s_reaLimitPyramidEditView.m_fxRightDeep = fBoatWidth / 2f; s_reaLimitPyramidEditView.m_fxLeftDeep = -fBoatWidth / 2f; s_reaLimitPyramidEditView.m_fYBTopDeep = fBoatHeight + 3f; s_reaLimitPyramidEditView.m_fYBottomDeep = 3f; fZeroHeight = (Start.Layer + 1) * 3.3f * 20f / 13f; //船占高度的7/12 fZeroWidth = fZeroHeight * s_aspect; if (fZeroWidth < Start.Unit * 3.0f) { fZeroWidth = Start.Unit * 3.0f; fZeroHeight = fZeroWidth / s_aspect; } float zoomBoatviewZ = -CalcCameraLimitZBySWH(fZeroHeight, s_fov); fBottom = fZeroHeight / 4f + 3.0f; //屏幕底往上1/4处为船底坐标位置 s_vEditViewBoatviewCamPos = new Vector3(0f, fBottom, zoomBoatviewZ); cam.transform.position = posTemp; ScreenManager.onScreenSizeChanged = OnScreenSizeChange; }
public static void SetFloorData(ShipCanvasInfo Map) { m_lFooorData.Clear(); g_ID = 0; List <List <int> > grid = new List <List <int> >(); List <List <int> > map = new List <List <int> >(); grid = Map.GetShape(); map = Map.GetMap(); Int2 start = new Int2(-1, 0); for (int j = 0; j < grid.Count; j++) { for (int k = 0; k < grid[j].Count; k++) { if (grid[j][k] == 0) { if (j < (grid.Count - 1)) { if (grid[j + 1][k] == 1) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(k * MapGrid.m_UnitRoomGridNum, j + 1); fd.m_FloorType = FloorType.bottom; m_lFooorData.Add(fd); } } if (k < (grid[j].Count - 1)) { if (grid[j][k + 1] == 1) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2((k + 1) * MapGrid.m_UnitRoomGridNum, j); fd.m_FloorType = FloorType.left; m_lFooorData.Add(fd); } } } else if (grid[j][k] == 1) { if (j == 0) { if (start.Unit < 0) { start.Unit = k; } FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(k * MapGrid.m_UnitRoomGridNum, 0); fd.m_FloorType = FloorType.bottom; m_lFooorData.Add(fd); } if (j == (grid.Count - 1)) { //if (map[j + 1][k] == 1) FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(k * MapGrid.m_UnitRoomGridNum, j + 1); fd.m_FloorType = FloorType.top; m_lFooorData.Add(fd); } else if (j < (grid.Count - 1)) { if (grid[j + 1][k] == 1) { if (map[j + 1][k] == 1) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(k * MapGrid.m_UnitRoomGridNum, j + 1); fd.m_FloorType = FloorType.Normal; m_lFooorData.Add(fd); } } else { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(k * MapGrid.m_UnitRoomGridNum, j + 1); fd.m_FloorType = FloorType.top; m_lFooorData.Add(fd); } } if (k == 0) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2(0, j); fd.m_FloorType = FloorType.left; m_lFooorData.Add(fd); } if (k == (grid[j].Count - 1)) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2((k + 1) * MapGrid.m_UnitRoomGridNum - 1, j); fd.m_FloorType = FloorType.right; m_lFooorData.Add(fd); } else if (k < (grid[j].Count - 1)) { if (grid[j][k + 1] == 0) { FloorData fd = new FloorData(); fd.SetFloorID(); fd.m_FloorPos = new Int2((k + 1) * MapGrid.m_UnitRoomGridNum - 1, j); fd.m_FloorType = FloorType.right; m_lFooorData.Add(fd); } } } else { #if UNITY_EDITOR_LOG Debug.Log("数据有问题"); #endif } } } }
public static void ShowSmoke() { int deadcout = CmCarbon.GetDestroyBuild().Count; int allcount = CmCarbon.GetDestoryBuildCount(); float y = deadcout * 1.0f / allcount; Transform start = BattleEnvironmentM.GetLifeMBornNode(true); ShipCanvasInfo info = CmCarbon.GetDefenseMap(); Transform boathead = GenerateShip.BoatHead; Transform boattail = GenerateShip.BoatTail; Transform boatmast = GenerateShip.BoatMast; foreach (GameObject go in s_effectgolist) { if (go != null) { GameObject.Destroy(go); } } s_effectgolist.Clear(); if (boathead == null || boatmast == null || boattail == null) { return; } Vector3 pos = Vector3.zero; if (0f < y && y <= 0.25f) { if (info.height <= 2) { pos = boathead.position; pos.y += 3; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos = boattail.position; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); } else { pos = boathead.position; pos.y += 6; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos = boattail.position; pos.y += 3; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); } } else if (0.25f < y && y <= 0.5f) { if (info.height <= 2) { pos = boathead.position; pos.y += 3; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000101", pos, null); s_effectgolist.Add(gae.gameObject); pos = boattail.position; gae = EffectM.LoadEffect("effect/prefab/", "2000101", pos, null); s_effectgolist.Add(gae.gameObject); pos = boatmast.position; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); } else { pos = boathead.position; pos.y += 6; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000101", pos, null); s_effectgolist.Add(gae.gameObject); pos = boattail.position; pos.y += 3; gae = EffectM.LoadEffect("effect/prefab/", "2000101", pos, null); s_effectgolist.Add(gae.gameObject); pos = boatmast.position; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); } } else if (0.5f < y) { if (info.height <= 2) { pos = boathead.position; pos.y += 3; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); pos.y -= 3; pos.x -= 3; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos = boattail.position; gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); pos.y += 3; pos.x += 3; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos = boatmast.position; gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); } else { pos = boathead.position; pos.y += 6; GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); pos.y -= 3; pos.x -= 3; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos.y += 3; pos = boattail.position; gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); pos.y += 3; pos.x += 3; gae = EffectM.LoadEffect("effect/prefab/", "2000111", pos, null); s_effectgolist.Add(gae.gameObject); pos = boatmast.position; gae = EffectM.LoadEffect("effect/prefab/", "2000091", pos, null); s_effectgolist.Add(gae.gameObject); } } }