From 2b4b2c4f7060286acca240fb4208d5e5fba1692d Mon Sep 17 00:00:00 2001 From: lishuo Date: Mon, 10 May 2021 18:13:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E5=9C=B0=E5=9B=BE=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E5=BE=AE=E8=B0=83=EF=BC=8C=E4=BA=BA=E7=89=A9=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Resources/Images/Ride/180-4.png | Bin 0 -> 5685 bytes Assets/Resources/Images/Ride/180-4.png.meta | 104 + Assets/Resources/Images/Ride/180-5.png | Bin 0 -> 5615 bytes Assets/Resources/Images/Ride/180-5.png.meta | 104 + Assets/Resources/Images/Ride/p-180.png | Bin 5755 -> 5715 bytes Assets/Resources/Images/Ride/p-180.png.meta | 2 +- Assets/Scenes/Ride/Ride.unity | 6272 +++++++++-------- Assets/Scenes/Ride/Scripts/AbstractPlayer.cs | 22 +- .../Scenes/Ride/Scripts/CyclingController.cs | 86 +- Assets/Scenes/Ride/Scripts/Helper.cs | 9 +- .../Ride/Scripts/Model/RecorderDataModel.cs | 16 +- .../Ride/Scripts/OnlinePlayerController.cs | 21 +- .../Scenes/Ride/Scripts/PlayerController.cs | 62 +- .../Ride/Scripts/SelectPlayerFactory.cs | 3 - Assets/Scenes/Ride/Scripts/SingleUIManager.cs | 10 +- 15 files changed, 3626 insertions(+), 3085 deletions(-) create mode 100644 Assets/Resources/Images/Ride/180-4.png create mode 100644 Assets/Resources/Images/Ride/180-4.png.meta create mode 100644 Assets/Resources/Images/Ride/180-5.png create mode 100644 Assets/Resources/Images/Ride/180-5.png.meta diff --git a/Assets/Resources/Images/Ride/180-4.png b/Assets/Resources/Images/Ride/180-4.png new file mode 100644 index 0000000000000000000000000000000000000000..372e0d3b19759c2d4c6d74a81bceddba7427c3f0 GIT binary patch literal 5685 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 NMd=tJ%e5RS{{w(NOFRGo literal 0 HcmV?d00001 diff --git a/Assets/Resources/Images/Ride/180-4.png.meta b/Assets/Resources/Images/Ride/180-4.png.meta new file mode 100644 index 00000000..13761556 --- /dev/null +++ b/Assets/Resources/Images/Ride/180-4.png.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: e07adf02a73867743949dd36e7f9e063 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Images/Ride/180-5.png b/Assets/Resources/Images/Ride/180-5.png new file mode 100644 index 0000000000000000000000000000000000000000..6857a807d0e3fa79581da07590ec838328963219 GIT binary patch literal 5615 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 v)4O!yBGfX{d7}3zvR!*Owcq{7qGO>vFP2q#?D literal 0 HcmV?d00001 diff --git a/Assets/Resources/Images/Ride/180-5.png.meta b/Assets/Resources/Images/Ride/180-5.png.meta new file mode 100644 index 00000000..5f26051f --- /dev/null +++ b/Assets/Resources/Images/Ride/180-5.png.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: 0debc94c2a8d76d44ac15330e14f5d71 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Images/Ride/p-180.png b/Assets/Resources/Images/Ride/p-180.png index db388bf815101f05dbc495ec99e974730b56927e..bbbe014478ec39be667e10cbe6d1154d02bfa4c7 100644 GIT binary patch delta 5062 zcmZ{ncQ_mD*T<>Y6tVXTirS-y6`K~d6-|v2vu3E7HdISX&5GF=HHzAM)hbmYHBzEh z)hID5TKo0DeLOUDkwp86m$)g zR8-SXNO=VQ7t;S%sQjAj|3Nzc3jMwI|Cx0E6;dSAK{Sz1ERm1^dyVxV){pUoeCkG) zLDu-)NCH(6@`Wo4IlJ}uTh@%^On>x*kvCkgCER{>Di^rUqvXw&wDwa^*unzx71c^A zbR$q-|1RIo6LV`l(j=N;p`4R#aOs-acxS;Mk6#7HJ;BnuA*SQ9R>Ux3_2&CXpYGEg zuwb~w7NV-Mp*jyf*^{3S4{5Hu@Y}75Etqq9-D`*G4m_%Ekjaw@YaX2~TUh*)H@&s^ z`p^lO%0;6l#<;P7357SmY$(7q!*TU`mzP{Hf3-@h+!X>V?DmWzO9)GIFm7m;6cbVT zcx4!jfd(8^HNf(^#!8FP5HRdKpWbro4R#Sh%I;o|SA@IY*pP6Eh7GB36MUV8=bwv6 z6lFxCH3LQ%;t^->8sM7>hC+88f zH(+HdTR;nv@p6Bf$gi`BsPj@{2s-D0c&gW_&0bl1x#O!zo_~`PP*$dHFKEijKOmH~ymjsOH+Zu>an{ zm|^8~bYs7_VLpT@L+2%F)F_sg2NANcEbvz9O6Mv*paq<3;iX|^Kc_bLZMFgvZz5Zq zz9p@MpH<-G5CD1)%R>g<{ z?n8fNt-zuNEwxCK7v>M(Uy`Rf964HJ^D7bJ8$$JMCsDffbVo~+3&rc52*~ytz+7J@ zD6~G#oJ@z~&!#H>UF@?z>El76Hf#^}9IK;R`FHPDhSycMbL!R~&IC+K2ZyGEoC~di zfFw#96nI|j%N8o4{jMRQWS{Vp@CSI4l!`3)05w_jGIE^VE@x|WaP+2Y{O#17$akn* zj8lzf|M#ZoMk(p64ReWEgs!9`xZ}%gjOwGOh*X+vaFQ1+D88Yxq4n{2>k>-Uzm|uQa9^oy}P7mOJJI`AT!xnDw+fX($#P zxX527Gs>A~Itzjac^-JYFE7hEc!MvsGwS~mDrtb7iBbGCn<=PuqDC!xlx3+<2dikF zh70CTXW~DNNzAW)M6kX(UhOUAaf~$!K4RDer8*~UN&$W0zkAo zE}kW)lv%PTcsyzLr?g7$dS$a-4>sa^F_ zMmz%9vJP0L4T_>RQi1BEhxbbCq~>33UJKMIymijmy+QOtj z@pQ;y6hw*rRF`(a(b?r)aZi;zIsxz*9wq%oKwC(#O`Bt7F-P9>*F;bo54a-W+>684 zb1+e@6epB=CtF>yE}z}F{P++%blW3uE%=6qrFOT4=`87w zC7nOmvBQyHzcO7SPf~r!ECGB<>2&@kwWaO7UY+F{hY1Fw!%cxqTlp*rFF_h_Z<|j$ zL!6SWy{Y&?8{zpxvqV6n(n7|4K_*KVJtoC^VWMmd#uKM1E?+F7u}XC$dR;0GJ+6Ql zvS%8c@+z6>taSLT+ENkQ7Ym9$Wik6y1QKlmy>q6_f3*jO#u=b+Gko~#XMBYyW9o2S zrS)JJx5$kh{Ps5#U!>Yrc1B7}T0spjQvYZ!{P+kfoP>f|jF!-82VcZ9c^<4ExARar zY4l~x_qB_-_j&JHf2R9TV1+eQ-9r4}bz_}U!AXiUuZTp8EQr4UI*inu6!))pSTivFZF`xU!R@(sLD87A9OOJl8|r^rNL~9bift=>fFw7C^%25Q3=sv3 z+#od={VnbR6qe=h`q;`#cGXwPZQ~%EU;-y|uosTzBp_Hln`r3z>8Dc;G1}AjPSj+i zUuHv6i5{mmb%GH$?|RezNT`w5x81_i>|2_*<agTUM}98aRD|Y{*+=LH`n+oA`BV-hNY{vU!#`(!YW9aUgJ1f2r^!{O z21}*QhUdFMhcrxzf`Okj_vXgf8@CG|xJ9R;+=S0|^D3Wv(72^3LUvQQScD$&t{t68 zNf|Nhac;dD;7~twT;mn?^yEIo-cLehUCkA#cJb{_H_ui{!2DPqLgg)7ABZ%KSd_Yh zC02>0F>Z=`TJ9rvTxql(YNWVI}d5HY72~XY8|!#5dSMt_g_H;2`fPxi%{c_ zuz9hf#=YKfU8?qc@t@MHX)LzcE4GXwUntCkKp$o>EpU5=bE&Na5FodumXl3vR`!9? z)nx(`h(pIOCjyyzDD+%|!_^Ht2SHR3;eb?TpkdCvw_HE&yBQ|_Q&p9%-7_NA&)ys) zXkYyy9=$#JCh5N-hEH@O`5#0cCkVlQx#4MPjD&jA-17KO_3bQ3s4vYe*nh-Hv~Nd* z)l3pm4~U%h)*v^PfFiJt4Ofqu8KKE3{AgtPnTv+b$7E4n?2qd|pR06|yy0;Dt|25n zj`oE9EFIXGMA=2V^%8Uk3-3m+qu9gTuds#=)eFrc#D@|HFKE~uV)Wfp){C)#4Hqf% zV<7sTKd6-8GvHLiWj2?8fDE6!sJaETs!~Q^Kgev9jUkMq?XL)Xzl)T6%6114>b}2j zyeiTAq5tzI@o{TCwsYSZ$DhDS$t@>y2zKr0k1SHv%=o7f(M~x{$e8au{FoDAxs_U{ zoNBq$kN67256S?&>#O&w41r{Ova77SkDCCTH{QUu3itb%OMPXxQU?H)gB7lQ0de}q zInK!lb4H2)&}x~e9+p|&Y=llzVhemabx*R!SL<`so{o|D?9eRT$|GN)Ug5nwjl(RA zXm0)6I!)tjPOoG!M>!a?B8N}%b0d!uLmd-+@HBe-zKfU#^Pwj=jEDjuAyT99TsN>9Y1djRR*E~e|!H{$hl66tKePG=|oVJ!YUtf7cn^KC|u zs&u3f@0bicGbnBdPEbum_a?3V1rc4S#6{=IaY0^n7D&Ez-|nziT~1jI-NuO2Hl2w- z^wM{wl<#3@NHy^pF3CE+oT$3Ur#3i`i4Pz8GM(^X z_(;IinU=TgxNU8Svzk>OYcz%QTe;XQOAw4<5IlZjOo6aEq9KxKj;`x+rI+(v_PUqS zJ&5~q+t^LjLSC58=}iradrp_^&Wc7ECL+;YP5TVBt$RRXp<4&-N0=8K7XkLSaI2>- zO-X0Kzpo99PjalI1PLL_@eaT?U7NALuFy)n!#5N|m0w?0uMIp&oLj)j)ubr+gZHO( zuFrQ;Ekm;U!!#I=>ssvM=UZn)FiVOcb}Fvloh63s+7F+0PsFWrnX)QsL;LMSqTAms z%tF($4f9emBGs%W5X`U`5r{+vx#{r|{#ul3)YAvq@=;$S8!5#G7N&=cJ=kU%awOJt zs2!&2dipcy>GtcW+Z^P-k<3@%4lO)LoswDnrp4;Tm(3;?av0T#y6W@@QGyb0aP_NP zG-;4b4+x?+%;E#0dU^tyYj_Vq9~h_c&9b>wMbj*Mv*1?|M*9VTUfyqy-T#s@&@@ci zDs)+sNtqgk=?D%w(Lr7w4ZyPNuSdX-oabzLTYb!}>1QC$y}S4({S&4ZwGLbcJkxn- zXU%uzJ*l6jNXb}@O%h9<&MDUGZME>XbW>GioPg9f*XA(&Si-<$z8`EvPFPvzz;CDS1rAUfI1@iTMcSVay#5_Q{$e>^60GA7B^S0DgZ9hU0=3YBPk?_n^B_~ zZc>C`yjA+c$p>>mR#q3N=JOHDs02LlV#x+?wTSQ^v9gK~E>9Sc*O|kbjcK6$p!J9N zCXtKf04+wQ_3Ks(I!KbO9%gAz6QF0MPvf=&>YHr8lHLS=J!`%t9gXhg1DKs^hsw_; zG3&!G3o(~?P~ebe^btnL|fKQg{E zUi__9o>Wo6$cV=#`<0dOD_yYoa)GW=7R`K?_;F=VPOzr%8q@BpK&=tV&5Nd+u6)IQ z>@Ul@1Ai4p$AdfWAz8-Qs_<&}{|ADsK zYXsjch&X(G72&{><1_Sh+j3hMYRKY1(7eakA_L`~q|w)R0iSw)zEk@G6@kDxE(v(o zEYVH0cZutb`ZSrI3|Nc??i5Bx{2C75y;&oia7>PYma*jma4u(phGI{v;l&~9%m_zs z=DT0vn-Kydn8ceJBRp^mRK6r4#cxx(x?fhV2HUp85m$zGK@v!Kz+I*Qnx>+d(4D4SkQ@qctrXN+0*Lpk zz4B%cp{e@Y#{x`y8hT}Z2h^d+Oc#YTymL5o@5W&b&<-BUee5-V!*tzBJ=?K4_6eOlgW-5HdRAM1W}E4}a$(U*G7 zdFya@UF2ke+lcWD$biTSwYBrUMg7);)~)HN&y9G!v3Y{K-2t#28|^<-{yO|c$&lmA z5g@UjedEDHABWPT3IJ`G<{!OGyZ|28fl|(JCbfl8hax^I+x3J=HYIWI&)2Scy-#M~ z3p&zQQhKCBgQpa}yukY~B+9->lqBMr`%8_9X6CkCXereA4x%#l=8Ur3dBN@`3ENR4 zK=m6n`Mdy!(N1BvWYjD#$X;fmNbgcB3i@z6zq0$3hq%tko`RI-c$_k6GoPN(Gk5QN z-fWY$m(0#2KLmnre%I&) RlUyBReKWleWIE2s{{h4Pr)B^E delta 5079 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 R0VT=R($_Z8s?u 0) { totalClimb = 0; - //计算累计爬升 for (int i = 1; i <= index; i++) { var diff = mapData.List[i].Elevation - mapData.List[i - 1].Elevation; @@ -155,17 +155,23 @@ namespace Assets.Scenes.Ride.Scripts //数据处理 nextPos = map.GeoToWorldPosition(currentlatlong);//下一个点 - nextPos.y += 1.15f;//提高y轴让人物站在地图上面 + nextPos.y += 1.35f;//提高y轴让人物站在地图上面 prePos = transform.localPosition;//当前点 thisRotation = transform.localRotation; //移动动画控制 - if (distance > 0) + //if (distance > 0) { + Debug.Log("164"+totalDistance.ToString()); StartCoroutine(MoveTo());//移动 } } } - protected virtual void SendTcp() + //游戏开始开关 + protected virtual bool GetStart() + { + return mainController.isStart; + } + protected virtual void BeforeRun() { } @@ -225,8 +231,6 @@ namespace Assets.Scenes.Ride.Scripts nextSlopeDistance = sumDistance - totalDistance * 1000; NextSlopeTotalDistance = pointList[nextIndex].Distance; currentSlopeDistance = CurrentDistance-( totalDistance * 1000 - (sumDistance - pointList[index].Distance)); - //人物初始化角度控制 - } public double PreElevation; public double PreSlope; diff --git a/Assets/Scenes/Ride/Scripts/CyclingController.cs b/Assets/Scenes/Ride/Scripts/CyclingController.cs index e4827ae1..2f7e6a42 100644 --- a/Assets/Scenes/Ride/Scripts/CyclingController.cs +++ b/Assets/Scenes/Ride/Scripts/CyclingController.cs @@ -17,6 +17,8 @@ using Assets.Scripts; using System.Threading.Tasks; using UnityEngine.EventSystems; using UnityEngine.Events; +using Assets.Scenes.Ride.Scripts.Model.RiderModels; +using System.IO; public class CyclingController : DeviceServiceMonoBase { @@ -50,7 +52,7 @@ public class CyclingController : DeviceServiceMonoBase LoadingController loadingController; private async Task Login() { - var result = await new UserApi().Login("13115011550", "laozhong", ""); + var result = await new UserApi().Login("15261826280", "123456", ""); App.CurrentUser = result.data; } GameObject miniMap; @@ -77,6 +79,8 @@ public class CyclingController : DeviceServiceMonoBase { UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent(); UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent(); + onlineUserPrefab = Resources.Load("UI/Prefab/Ride/OnlinePlayer"); + miniMapPlayerPrefab = Resources.Load("UI/Prefab/Ride/MiniMapPlayer"); target = transform.Find("Target"); //进入倒计时 singleUIManager = UIObject.GetComponent(); @@ -240,7 +244,74 @@ public class CyclingController : DeviceServiceMonoBase singleUIManager.ContinueRide(); } - #region + #region TCP相关 + + public void TcpHandler() + { + if (cyclingController != null) + { + //tcp数据传输 + cyclingController.Run(null); + //在线人物或比赛人物渲染 + ShowOnlineUsers(); + } + } + + List otherList = new List(); + GameObject onlineUserPrefab; + GameObject miniMapPlayerPrefab; + + private void ShowOnlineUsers() + { + var onlineRiders = cyclingController.riders; + List currentOnlineUserList = new List(); + currentOnlineUserList.AddRange(FindObjectsOfType()); + //新增或者更新 + foreach (var item in onlineRiders) + { + var onlineRider = item as OnlineRiderModel; + var currentUser = currentOnlineUserList.Where(c => c.UserId == item.UserId).FirstOrDefault(); + var onlineDistance = onlineRider.EndDistance - onlineRider.PreDistance; + var onlineTotalDistance = onlineRider.EndDistance; + if (currentUser == null) + { + //for (int i = 0; i < 100; i++) + { + //大地图人物 + GameObject otherPlayerObj = (GameObject)Instantiate(onlineUserPrefab, transform); + var onlinePlayerController = otherPlayerObj.GetComponent(); + otherList.Add(onlinePlayerController); + onlinePlayerController.UserId = onlineRider.UserId; + //onlinePlayerController.SetDistance(onlineDistance); + onlinePlayerController.SetTotalDistance(onlineTotalDistance, onlineDistance); + onlinePlayerController.SetHead(onlineRider.WxHeadImg); + //小地图人物 + GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform); + var miniController = miniPlayer.GetComponent(); + miniController.SetController(onlinePlayerController); + } + } + else + { + //currentUser.SetDistance(onlineDistance); + currentUser.SetTotalDistance(onlineTotalDistance, onlineDistance); + } + } + ////移除 + //foreach (var item in currentOnlineUserList) + //{ + // var currentItem = onlineRiders.Where(c => c.UserId == item.UserId).FirstOrDefault(); + // if (currentItem == null) + // { + // item.RemoveSelf(); + // } + //} + } + #endregion + + #region 视角切换 + + public AbstractMap map3d; public bool Is3dView; public void ChangeMapImageStyle(GameObject arrowGameObj) { @@ -255,6 +326,8 @@ public class CyclingController : DeviceServiceMonoBase map.Terrain.SetElevationType(ElevationLayerType.TerrainWithElevation); map.ImageLayer.SetLayerSource(ImagerySourceType.Custom); map.SetCenterLatitudeLongitude(playerController.Currentlatlong); + //map3d.gameObject.SetActive(true); + //map.gameObject.SetActive(false); //人物属性变更 var pos = map.GeoToWorldPosition(playerController.Currentlatlong); playerController.currentPos = pos; @@ -272,6 +345,8 @@ public class CyclingController : DeviceServiceMonoBase map.Terrain.ExaggerationFactor = 0f; map.Terrain.SetElevationType(ElevationLayerType.FlatTerrain); map.SetCenterLatitudeLongitude(playerController.Currentlatlong); + //map.gameObject.SetActive(true); + //map3d.gameObject.SetActive(false); //人物属性变更 var pos = map.GeoToWorldPosition(playerController.Currentlatlong); player.transform.position = pos; @@ -377,7 +452,10 @@ public class CyclingController : DeviceServiceMonoBase isStart = false; string recordId = Guid.NewGuid().ToString(); - var path = Helper.GetDataDir("MapWorkoutRecords/"+ recordId); + //var path = Helper.GetDataDir("MapWorkoutRecords/"+ recordId); + var path = PFConstants.MapWorkoutRecordFolder + "/" + recordId; + Helper.CreateDirectoryIfNotExsit(path); + string imageFileName = path +"/"+ Guid.NewGuid().ToString() + ".png"; CaptureCamera(Camera.main, new Rect(Screen.width * 0f, Screen.height * 0f, Screen.width * 0.5f, Screen.height * 0.5f), imageFileName); @@ -392,7 +470,7 @@ public class CyclingController : DeviceServiceMonoBase var rs = resultPanel.GetComponent(); rs.InjectController(this); rs.SetDataSource(cyclingController.recorderData); - cyclingController.recorderData.SaveLocal(cyclingModel, selectParamModel, imageFileName, recordId); + cyclingController.recorderData.SaveWithLocalRecordAysnc(cyclingModel, selectParamModel, imageFileName, recordId, path); } protected void CaptureCamera(Camera camera, Rect rect,string fileName) diff --git a/Assets/Scenes/Ride/Scripts/Helper.cs b/Assets/Scenes/Ride/Scripts/Helper.cs index e57ea69d..73b8a59a 100644 --- a/Assets/Scenes/Ride/Scripts/Helper.cs +++ b/Assets/Scenes/Ride/Scripts/Helper.cs @@ -16,14 +16,13 @@ namespace Assets.Scenes.Ride.Scripts { public class Helper { - public static string GetDataDir(string pathName) + public static string CreateDirectoryIfNotExsit(string path) { - var dirName = Application.dataPath + "/" + pathName; - if (!Directory.Exists(dirName)) + if (!Directory.Exists(path)) { - Directory.CreateDirectory(dirName); + Directory.CreateDirectory(path); } - return dirName; + return path; } public static void DelectDir(string srcPath) diff --git a/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs b/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs index 4686b125..e47da270 100644 --- a/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs +++ b/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs @@ -1,4 +1,5 @@ -using Assets.Scripts.Apis; +using Assets.Scripts; +using Assets.Scripts.Apis; using Assets.Scripts.Apis.Models; using Newtonsoft.Json; using System; @@ -106,7 +107,7 @@ namespace Assets.Scenes.Ride.Scripts.Model public int GlobalCyclingId { get; set; } - public void SaveLocal(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName,string recordId) + public void SaveWithLocalRecordAysnc(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName,string recordId,string path) { Dictionary> recordData = new Dictionary>(); if (RiderDatas.Count <= 0) @@ -181,7 +182,9 @@ namespace Assets.Scenes.Ride.Scripts.Model interruptRecord.MaxHeartRate = RiderDatas.Max(a => a._HeartRate.GetValueOrDefault(0)); //service.CreateRecordCyclingData(interruptRecord); //保存骑行记录txt - var path = Helper.GetDataDir("MapWorkoutRecords" + "/" + interruptRecord.Id); + + //var path = Helper.GetDataDir("MapWorkoutRecords" + "/" + interruptRecord.Id); + //var path = PFConstants.MapWorkoutRecordFolder + "/" + interruptRecord.Id; var fname = path + "/" + newFileName + ".txt"; var files = new List(); using (var fs = new FileInfo(fname).OpenWrite()) @@ -208,18 +211,18 @@ namespace Assets.Scenes.Ride.Scripts.Model recordData.Add(interruptRecord, files); - SaveDataAysnc(recordData); + SaveDataAysnc(recordData, path); } /// /// 保存数据 /// /// /// - public void SaveDataAysnc(Dictionary> data) + public void SaveDataAysnc(Dictionary> data,string path) { if (data != null && data.Count > 0) { - var path = Helper.GetDataDir("MapWorkoutRecords"); + //var path = Helper.GetDataDir("MapWorkoutRecords"); Task.Run(() => { var record = data.FirstOrDefault(); MapInterruptRecordApi service = new MapInterruptRecordApi(); @@ -228,7 +231,6 @@ namespace Assets.Scenes.Ride.Scripts.Model //删除文件 try { - path = path + "/" + record.Key.Id; if (result.result && Directory.Exists(path)) { Helper.DelectDir(path); diff --git a/Assets/Scenes/Ride/Scripts/OnlinePlayerController.cs b/Assets/Scenes/Ride/Scripts/OnlinePlayerController.cs index 01a8e6c5..a769f627 100644 --- a/Assets/Scenes/Ride/Scripts/OnlinePlayerController.cs +++ b/Assets/Scenes/Ride/Scripts/OnlinePlayerController.cs @@ -16,22 +16,31 @@ namespace Assets.Scenes.Ride.Scripts protected override void Init() { base.Init(); + currentlatlong = mainController.GetCenterCoordinate(); _playerController = FindObjectOfType(); + var cuurentLocalPos = map.GeoToWorldPosition(currentlatlong); + cuurentLocalPos.y += transform.localScale.y; + transform.localPosition = cuurentLocalPos; + } + protected override bool GetStart() + { + return true; } - protected override void Compute() { + Debug.Log("31" + totalDistance.ToString()); currentlatlong = mainController.Along(totalDistance);//下一个坐标 } public void SetDistance(double _distance) { - distance = _distance; } - public void SetTotalDistance(double _totalDistance) + public void SetTotalDistance(double _totalDistance, double _distance) { + Debug.Log("41" + _totalDistance.ToString()); totalDistance = _totalDistance; + distance = _distance; } private string headUrl; public void SetHead(string url ) @@ -56,5 +65,11 @@ namespace Assets.Scenes.Ride.Scripts } headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1); } + + public void RemoveSelf() + { + transform.gameObject.Destroy(); + headPanel.Destroy(); + } } } \ No newline at end of file diff --git a/Assets/Scenes/Ride/Scripts/PlayerController.cs b/Assets/Scenes/Ride/Scripts/PlayerController.cs index 0d62f6fc..1d86143f 100644 --- a/Assets/Scenes/Ride/Scripts/PlayerController.cs +++ b/Assets/Scenes/Ride/Scripts/PlayerController.cs @@ -11,14 +11,11 @@ namespace Assets.Scenes.Ride.Scripts { #region 骑行逻辑 TrailRenderer trail; - GameObject onlineUserPrefab; - GameObject miniMapPlayerPrefab; + protected override void Init() { base.Init(); - onlineUserPrefab = Resources.Load("UI/Prefab/Ride/OnlinePlayer"); - miniMapPlayerPrefab = Resources.Load("UI/Prefab/Ride/MiniMapPlayer"); totalDistance = mainController.selectParamModel.EndDistance; currentlatlong = mainController.GetCenterCoordinate(); @@ -30,6 +27,13 @@ namespace Assets.Scenes.Ride.Scripts //var color7 = Resources.Load("UI/Material/color7"); //var Graph2 = Resources.Load("UI/Material/3dGraph2"); //trail.materials = new Material[] { color7}; + + trail.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + trail.allowOcclusionWhenDynamic = false; + trail.textureMode = LineTextureMode.Tile; + trail.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion; + trail.receiveShadows = false; + trail.rayTracingMode = UnityEngine.Experimental.Rendering.RayTracingMode.Off; } TargetData targetData; /// @@ -45,7 +49,7 @@ namespace Assets.Scenes.Ride.Scripts weight = App.CurrentUser.Weight; bicycleWeight = App.CurrentUser.BicycleWeight; #if UNITY_EDITOR - power = 2380;//测试功率 + power = 300;//测试功率 #endif mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100); speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight); @@ -75,60 +79,18 @@ namespace Assets.Scenes.Ride.Scripts } } - protected override void SendTcp() + protected override void BeforeRun() { - if (mainController.cyclingController != null) + if (mainController != null) { - mainController.cyclingController.Run(null); - ShowOnlineUsers(); + mainController.TcpHandler(); } } - List otherList = new List(); - - private void ShowOnlineUsers() - { - var onlineRiders = mainController.cyclingController.riders; - List currentOnlineUserList = new List(); - currentOnlineUserList.AddRange(FindObjectsOfType()); - - if (onlineRiders.Count > 0) - { - foreach (var item in onlineRiders) - { - var onlineRider = item as OnlineRiderModel; - var currentUser = currentOnlineUserList.Where(c => c.UserId == item.UserId).FirstOrDefault(); - var onlineDistance = onlineRider.EndDistance - onlineRider.PreDistance; - var onlineTotalDistance = onlineRider.EndDistance; - if (currentUser == null) - { - //大地图人物 - GameObject otherPlayerObj = (GameObject)Instantiate(onlineUserPrefab, transform.parent); - var onlinePlayerController = otherPlayerObj.GetComponent(); - otherList.Add(onlinePlayerController); - onlinePlayerController.UserId = onlineRider.UserId; - onlinePlayerController.SetDistance(onlineDistance); - onlinePlayerController.SetTotalDistance(onlineTotalDistance); - onlinePlayerController.SetHead(onlineRider.WxHeadImg); - //小地图人物 - GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform.parent); - var miniController = miniPlayer.GetComponent(); - miniController.SetController(onlinePlayerController); - } - else - { - currentUser.SetDistance(onlineDistance); - currentUser.SetTotalDistance(onlineTotalDistance); - } - } - } - } - //上传数据 public override void Upload() { mainController.Save(TotalDistance); - //SceneManager.LoadScene("MainScene"); } #endregion } diff --git a/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs b/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs index eca8e689..f4700775 100644 --- a/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs +++ b/Assets/Scenes/Ride/Scripts/SelectPlayerFactory.cs @@ -5,9 +5,6 @@ using Assets.Scripts.Apis.Models; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEditor.Events; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; diff --git a/Assets/Scenes/Ride/Scripts/SingleUIManager.cs b/Assets/Scenes/Ride/Scripts/SingleUIManager.cs index e8aa13e9..4e3e47ee 100644 --- a/Assets/Scenes/Ride/Scripts/SingleUIManager.cs +++ b/Assets/Scenes/Ride/Scripts/SingleUIManager.cs @@ -338,7 +338,7 @@ namespace Assets.Scenes.Ride.Scripts } else { - target.transform.eulerAngles.Set(cameraX, cameraY, cameraZ);// = new Vector3(cameraX, cameraY, cameraZ); + target.transform.eulerAngles = new Vector3(cameraX, cameraY, cameraZ); } //控制照片移动 ((RectTransform)arrow.transform).position = Camera.main.WorldToScreenPoint(target.transform.position); @@ -655,10 +655,10 @@ namespace Assets.Scenes.Ride.Scripts foreach (var item in onlineUsers) { var itemIndex = chartDataSourceScript.GetViewIndex(item.CurrentIndex) + 1; - if (!mainController.isStart && !mainController.isPause && !mainController.isQuit || (mainController.isStart && item.TotalDistance == 0))//未开始未暂停未结束 - { - itemIndex = 0; - } + //if (!mainController.isStart && !mainController.isPause && !mainController.isQuit || (mainController.isStart && item.TotalDistance == 0))//未开始未暂停未结束 + //{ + // itemIndex = 0; + //} var m = graph.DataSource.GetPoint("Player 2", itemIndex); graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2"); itemPosition.x -= 12f;