diff --git a/Assets/Scripts/Scenes/MainController.cs b/Assets/Scripts/Scenes/MainController.cs index 312f2128..c5fbda6b 100644 --- a/Assets/Scripts/Scenes/MainController.cs +++ b/Assets/Scripts/Scenes/MainController.cs @@ -404,6 +404,8 @@ public class MainController : BaseScene var message = lang == "zh" ? $"{item.Name}进入了 运动地球" : "entered PowerFun"; EventQueueSystem.QueueEventOnce(new LinkedMessageEvent(-1, message, item.HeadImage, item.Name, item.RouteName), $"{item.Id}{item.LastActiveTime}{item.Point}"); } + if (!string.IsNullOrEmpty(item.RouteName)) + continue; if (item.RouteId > 0) { var message = ""; @@ -478,15 +480,19 @@ public class MainController : BaseScene { var tempRecordData = Newtonsoft.Json.JsonConvert.DeserializeObject(content); App.tempRecordData = tempRecordData; - - UIManager.ShowConfirm(App.GetLocalString("Reconnect"), App.GetLocalString("Did you want to reconnect the trip that was interrupted abnormally?"), () => { - App.RouteIdParam = App.tempRecordData.RouteId; - App.CompetionId = App.tempRecordData.CompetitionId; - SceneManager.LoadScene("Ride"); - },2,()=> { - Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder); - App.tempRecordData = null; - }); + if (App.tempRecordData.UserId == App.CurrentUser.Id) + { + UIManager.ShowConfirm(App.GetLocalString("Reconnect"), App.GetLocalString("Did you want to reconnect the trip that was interrupted abnormally?"), () => + { + App.RouteIdParam = App.tempRecordData.RouteId; + App.CompetionId = App.tempRecordData.CompetitionId; + SceneManager.LoadScene("Ride"); + }, 2, () => + { + Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder); + App.tempRecordData = null; + }); + } } } } diff --git a/Assets/Scripts/Scenes/Ride/Model/RecorderDataModel.cs b/Assets/Scripts/Scenes/Ride/Model/RecorderDataModel.cs index 93c2327a..164b47e2 100644 --- a/Assets/Scripts/Scenes/Ride/Model/RecorderDataModel.cs +++ b/Assets/Scripts/Scenes/Ride/Model/RecorderDataModel.cs @@ -274,6 +274,7 @@ namespace Assets.Scenes.Ride.Scripts.Model public class TempRecordData { public int CompetitionId { get; set; } + public int UserId { get; set; } public int RouteId { get; set; } public RouteResultParam selectParam { get; set; } public double CurrentRouteStartDistance { get; set; } diff --git a/Assets/Scripts/Scenes/Ride/Scripts/AbstractPlayer.cs b/Assets/Scripts/Scenes/Ride/Scripts/AbstractPlayer.cs index ced6a663..a24fb21a 100644 --- a/Assets/Scripts/Scenes/Ride/Scripts/AbstractPlayer.cs +++ b/Assets/Scripts/Scenes/Ride/Scripts/AbstractPlayer.cs @@ -126,6 +126,10 @@ namespace Assets.Scenes.Ride.Scripts cyclingExcutor = mainController.cyclingController; ComputeNextSlope();//计算下一个坡度相关数据 } + public virtual void UpdateAnimator() + { + characterAnimator = GetComponentInChildren(); + } protected virtual void Excute() { diff --git a/Assets/Scripts/Scenes/Ride/Scripts/BaseUIManager.cs b/Assets/Scripts/Scenes/Ride/Scripts/BaseUIManager.cs index 4091cd92..0d669826 100644 --- a/Assets/Scripts/Scenes/Ride/Scripts/BaseUIManager.cs +++ b/Assets/Scripts/Scenes/Ride/Scripts/BaseUIManager.cs @@ -372,8 +372,8 @@ namespace Assets.Scenes.Ride.Scripts //{ // return; //} - mainController.Is3dView = false; ChangeView(null); + //mainController.Is3dView = true; } } diff --git a/Assets/Scripts/Scenes/Ride/Scripts/CyclingController.cs b/Assets/Scripts/Scenes/Ride/Scripts/CyclingController.cs index 6658c631..c136adfb 100644 --- a/Assets/Scripts/Scenes/Ride/Scripts/CyclingController.cs +++ b/Assets/Scripts/Scenes/Ride/Scripts/CyclingController.cs @@ -716,7 +716,7 @@ public class CyclingController : DeviceServiceMonoBase private GameObject onlinePlayer { get; set; } Vector3 MAX_SIZE = new Vector3(3f, 3f, 3f); - Vector3 MIN_SIZE = new Vector3(1f, 1f, 1f); + Vector3 MIN_SIZE = new Vector3(0.1f, 0.1f, 0.1f); public void ChangeCurrentPlayer(int userId) { var coll = FindObjectsOfType(); @@ -733,7 +733,15 @@ public class CyclingController : DeviceServiceMonoBase Utils.DestroyChildren(selectedPlayer.transform); var ss = Instantiate(onlineUserPrefab3d, selectedPlayer.transform); ss.transform.localScale = Is3dView ? MAX_SIZE : MIN_SIZE; + selectedPlayer.UpdateAnimator(); } + Vector2d nextLatLon = Along(selectedPlayer.TotalDistance + 0.1); + //设定人物方向 + var s = map.GeoToWorldPosition(selectedPlayer.Currentlatlong); + var e = map.GeoToWorldPosition(nextLatLon); + Quaternion neededRotation = Quaternion.LookRotation(s - e); + selectedPlayer.transform.rotation = Quaternion.Euler(0, neededRotation.eulerAngles.y, 0); + selectedPlayer.currentRotation = neededRotation; } var unselectedPlayers = coll.Where(c => c.UserId != userId).ToList(); @@ -893,7 +901,7 @@ public BaseUIManager singleUIManager; { currentUser.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.Power, onlineRider.HeartRate, onlineRider.Cadence, onlineRider.TotalTicks, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude), index); } - //如果是观察者且当前第一此进入场景(TODO:这样切换会闪一下待解决) + if (isWatch && (currentPlayer is PlayerController || currentPlayer == null)) { var userId = onlineRiders.FirstOrDefault()?.UserId ?? 0; @@ -1157,6 +1165,7 @@ public BaseUIManager singleUIManager; RecorderDataModel recorderData = cyclingController.recorderData; tempRecordData.RiderDatas = recorderData.RiderDatas; tempRecordData.selectParam = recorderData.selectParam; + tempRecordData.UserId = App.CurrentUser.Id; tempRecordData.RouteId = mapRoute.Id; tempRecordData.CompetitionId = recorderData.Competitionid; tempRecordData.StartTime = startTime; diff --git a/Assets/Scripts/Scenes/Ride/Scripts/OnlinePlayerController.cs b/Assets/Scripts/Scenes/Ride/Scripts/OnlinePlayerController.cs index d663d7fc..44373210 100644 --- a/Assets/Scripts/Scenes/Ride/Scripts/OnlinePlayerController.cs +++ b/Assets/Scripts/Scenes/Ride/Scripts/OnlinePlayerController.cs @@ -30,27 +30,32 @@ namespace Assets.Scenes.Ride.Scripts //创建UI var uipanel = mainController.GetUIPanel(); uiObject = uipanel.transform.Find("ArrowList"); - if (mainController.cyclingController.Mode == CyclingModel.Competition) - { -#if UNITY_IOS || UNITY_ANDROID - var CompetitionArrow = mainController.GetCompetitionMobileArrow(); - arrowImage = Instantiate(CompetitionArrow, uiObject); -#else - var CompetitionArrow = mainController.GetCompetitionArrow(); - arrowImage = Instantiate(CompetitionArrow, uiObject); -#endif - //比赛模式 - if (!string.IsNullOrEmpty(headUrl)) - { - var rawImge = arrowImage.transform.Find("Head").GetComponent(); - Utils.DisplayImage(rawImge, headUrl, true); - rawImge.gameObject.SetActive(true); - } - } - else +// if (mainController.cyclingController.Mode == CyclingModel.Competition) +// { +//#if UNITY_IOS || UNITY_ANDROID +// var CompetitionArrow = mainController.GetCompetitionMobileArrow(); +// arrowImage = Instantiate(CompetitionArrow, uiObject); +//#else +// var CompetitionArrow = mainController.GetCompetitionArrow(); +// arrowImage = Instantiate(CompetitionArrow, uiObject); +//#endif +// //比赛模式 +// if (!string.IsNullOrEmpty(headUrl)) +// { +// var rawImge = arrowImage.transform.Find("Head").GetComponent(); +// Utils.DisplayImage(rawImge, headUrl, true); +// rawImge.gameObject.SetActive(true); +// } +// } +// else { arrowImage = Instantiate(Resources.Load("UI/Prefab/Ride/ReviewArrow"), uiObject); arrowImage.color = new Color(0.1529412f, 0.8745098f, 0.8901961f); +#if UNITY_IOS || UNITY_ANDROID + arrowImage.transform.DOScale(new Vector3(1f,1f,1f),0); +#else + arrowImage.transform.DOScale(new Vector3(2f,2f,2f),0); +#endif } } public override bool GetStart() @@ -156,11 +161,11 @@ namespace Assets.Scenes.Ride.Scripts protected override void AfterExcute() { var playerScreenPos = Camera.main.WorldToScreenPoint(transform.position); - //如果是比赛模式头像 - if (mainController.cyclingModel == CyclingModel.Competition) - { - playerScreenPos.y += 10f; - } + ////如果是比赛模式头像 + //if (mainController.cyclingModel == CyclingModel.Competition) + //{ + // playerScreenPos.y += 10f; + //} //如果观察的是当前用户 隐藏UI 添加trailrender var iscurrentUser = mainController.currentPlayer.UserId == UserId; var s = mainController.currentPlayer.Currentlatlong;