海拔图区间微调,消息面板&线路等微调

This commit is contained in:
lishuo committed 2021-05-13 17:48:28 +08:00
1 parent b694a69f16
commit 46cc231fe7
19 files changed
+3604 -3034

No files matched your search

+3090 -2932
View File
File diff suppressed because it is too large. Load diff
+7 -19
View File
@@ -133,19 +133,7 @@ namespace Assets.Scenes.Ride.Scripts
//开始骑行
if (GetStart())
{
//计算累计爬升
if (index > 0)
{
totalClimb = 0;
for (int i = 1; i <= index; i++)
{
var diff = mapData.List[i].Elevation - mapData.List[i - 1].Elevation;
if (diff > 0)
{
totalClimb += diff;
}
}
}
ticks++;
Compute();//接受蓝牙设备数据计算
@@ -164,7 +152,7 @@ namespace Assets.Scenes.Ride.Scripts
prePos = transform.localPosition;//当前点
thisRotation = transform.localRotation;
//移动动画控制
//if (distance > 0)
if (distance > 0)
{
StartCoroutine(MoveTo());//移动
}
@@ -234,7 +222,7 @@ namespace Assets.Scenes.Ride.Scripts
nextSlope = pointList[nextIndex].Grade;
nextSlopeDistance = sumDistance - totalDistance * 1000;
NextSlopeTotalDistance = pointList[nextIndex].Distance;
currentSlopeDistance = CurrentDistance-( totalDistance * 1000 - (sumDistance - pointList[index].Distance));
currentSlopeDistance = (totalDistance * 1000 - (sumDistance - pointList[index].Distance));// CurrentDistance-( totalDistance * 1000 - (sumDistance - pointList[index].Distance));
}
public double PreElevation;
public double PreSlope;
@@ -280,11 +268,11 @@ namespace Assets.Scenes.Ride.Scripts
t += Time.deltaTime;
Vector3 v = Vector3.Lerp(prePos, nextPos, t);
Vector3 nextPosition = new Vector3((float)Math.Round(v.x, 2), (float)Math.Round(v.y, 2), (float)Math.Round(v.z, 2));
if (!nextPosition.Equals(transform.localPosition))
//Vector3 nextPosition = new Vector3((float)Math.Round(v.x, 2), (float)Math.Round(v.y, 2), (float)Math.Round(v.z, 2));
//if (!nextPosition.Equals(transform.localPosition))
{
currentPos = nextPosition;
transform.localPosition = nextPosition;
currentPos = v;
transform.localPosition = v;
//Camera.main.transform.localPosition = nextPosition;
}
yield return new WaitForEndOfFrame();
+20 -10
View File
@@ -36,7 +36,7 @@ public class CyclingController : DeviceServiceMonoBase
private MapRoute mapRoute;//当前路书数据
private MapDataModel mapData;//当前路书数据
private Route route;//当前路书综合数据
public List<MapRouteRanking> mapRouteRankingList;
public List<MapRouteRanking> mapRouteRankingList { get; set; }
private Vector2d coordiantes;//当前地图中心
public bool isStart;//当前游戏是否开始
@@ -176,9 +176,14 @@ public class CyclingController : DeviceServiceMonoBase
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
if (list.result)
{
mapRouteRankingList = list.data.list;
loadingController.CreateRankingList(mapRouteRankingList);
loadingController.AddProcess(10);
loadingController.CreateRankingList(list.data.list);
loadingController.AddProcess(5);
}
var shaowList = mapApi.GetShadowList(App.RouteIdParam, "", 0, 10);
if (shaowList.result)
{
mapRouteRankingList = shaowList.data.list;
loadingController.AddProcess(5);
}
}
//加载人物和地图以及UI界面
@@ -264,11 +269,11 @@ public class CyclingController : DeviceServiceMonoBase
GameObject onlineUserPrefab;
GameObject miniMapPlayerPrefab;
int messageIndex = 0;
private void ShowOnlineUsers()
{
var onlineRiders = cyclingController.riders;
List<OnlinePlayerController> currentOnlineUserList = new List<OnlinePlayerController>();
currentOnlineUserList.AddRange(FindObjectsOfType<OnlinePlayerController>());
var currentOnlineUserList = FindObjectsOfType<OnlinePlayerController>();
//新增或者更新
foreach (var item in onlineRiders)
{
@@ -276,30 +281,35 @@ public class CyclingController : DeviceServiceMonoBase
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);
otherPlayerObj.transform.position = map.GeoToWorldPosition(Along(onlineTotalDistance));
var onlinePlayerController = otherPlayerObj.GetComponent<OnlinePlayerController>();
otherList.Add(onlinePlayerController);
onlinePlayerController.UserId = onlineRider.UserId;
//onlinePlayerController.SetDistance(onlineDistance);
onlinePlayerController.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.NickName, onlineRider.WeightKg);
onlinePlayerController.SetHead(onlineRider.WxHeadImg);
//小地图人物
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(onlinePlayerController);
EventQueueSystem.QueueEvent(new JoinMessageEvent(onlineRider.NickName, onlineRider.WxHeadImg));
//发消息xx进入路书
if(messageIndex > 0)
EventQueueSystem.QueueEvent(new JoinMessageEvent(onlineRider.NickName, onlineRider.WxHeadImg));
}
else
{
currentUser.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.NickName, onlineRider.WeightKg);
}
}
if(onlineRiders.Count > 0)
messageIndex++;
//移除
foreach (var item in currentOnlineUserList)
{
@@ -28,7 +28,7 @@ namespace Assets.Scenes.Ride.Scripts
Name = e.name;
url = e.url;
}
float timer = 1f;
float timer = 2f;
private void Update()
{
timer -= Time.deltaTime;
@@ -37,27 +37,19 @@ namespace Assets.Scenes.Ride.Scripts
if (!string.IsNullOrEmpty(Name))
{
text.text = Name;
canvas.DOFade(1, 1);
canvas.DOFade(1, 2);
Name = string.Empty;
}
else
{
canvas.DOFade(0, 1);
canvas.DOFade(0, 2);
}
if (!string.IsNullOrEmpty(url))
{
Utils.DisplayImage(head, url, false);
url = string.Empty;
}
//dic.
//foreach (var item in dic)
//{
// text.text = item.Key;
// Utils.DisplayImage(head, item.Value, true);
// dic.Remove(item.Key);
// break;
//}
timer = 1.0f;
timer = 2.0f;
}
}
}
+13 -9
View File
@@ -1,5 +1,6 @@
using DG.Tweening;
using System;
using System.Collections;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
@@ -28,24 +29,27 @@ namespace Assets.Scenes.Ride.Scripts
{
text.text = string.Format(format, totalDistance);
index = currentIndex;
mOldScore = 0;
process.fillAmount = 0;
process.fillAmount = 1;
StartCoroutine(CompleteFill(process));
}
else
{
mScoreSequence.Append(DOTween.To(delegate (float value)
{
//if (value != newScore)
{
temp = Math.Round(value, digit);
process.fillAmount = ((float)temp / (float)totalDistance);
//向Text组件赋值
text.text = string.Format(format, temp);
}
temp = Math.Round(value, digit);
process.fillAmount = (float)(value / totalDistance);
//向Text组件赋值
text.text = string.Format(format, temp);
}, mOldScore, newScore, 1f));
//将更新后的值记录下来, 用于下一次滚动动画
mOldScore = newScore;
}
}
IEnumerator CompleteFill(Image process)
{
yield return new WaitForSeconds(0.3f);
mOldScore = 0;
process.fillAmount = 0;
}
}
}
@@ -48,13 +48,10 @@ namespace Assets.Scenes.Ride.Scripts
protected override void Compute()
{
currentlatlong = mainController.Along(totalDistance);//下一个坐标
//var currentUser = cyclingExcutor?.riders.Where(c => c.UserId == UserId).FirstOrDefault();
//if (currentUser == null)
//{
// RemoveSelf();
//}
diff = Math.Round((totalDistance - _playerController.TotalDistance) * 1000, 0);
}
double diff = 0;
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg)
{
totalDistance = _totalDistance;
@@ -108,6 +105,10 @@ namespace Assets.Scenes.Ride.Scripts
{
Utils.DisplayImage(head, headUrl, true);
}
else
{
headPanel.transform.Find("DefaultHead").gameObject.SetActive(true);
}
}
headPanel.transform.DOMove(new Vector3(itemPosition.x, itemPosition.y, 0), 1);
@@ -119,7 +120,7 @@ namespace Assets.Scenes.Ride.Scripts
{
infoPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/OnlineInfoPanel"), uiObject);
}
var infoPos = playerScreenPos + new Vector3(100f, 60f, 0f);
var infoPos = playerScreenPos + new Vector3(150f, 60f, 0f);
((RectTransform)infoPanel.transform).position = infoPos;
CreateInfoLine(playerScreenPos, infoPos);
var infoHead = infoPanel.transform.Find("Head").GetComponent<RawImage>();
@@ -133,7 +134,7 @@ namespace Assets.Scenes.Ride.Scripts
var infoDistance = infoPanel.transform.Find("Distance").GetComponent<Text>();
if (_playerController != null)
{
infoDistance.text = ((totalDistance - _playerController.TotalDistance ) * 1000).ToString("f0") + "M";
infoDistance.text = diff > 0? $"+{diff}M" : $"{diff}M";
}
var infoWKG = infoPanel.transform.Find("WKG").GetComponent<Text>();
infoWKG.text = weightKgStr;
@@ -144,9 +145,12 @@ namespace Assets.Scenes.Ride.Scripts
public void RemoveSelf()
{
headPanel?.SetActive(false);
//transform.gameObject.SetActive(false);
infoPanel?.SetActive(false);
//headPanel?.SetActive(false);
arrowImage.gameObject.SetActive(false);
headPanel?.Destroy();
infoPanel?.Destroy();
transform.gameObject.Destroy();
//infoPanel?.SetActive(false);
//transform.DestroyChildren();
}
@@ -179,7 +183,7 @@ namespace Assets.Scenes.Ride.Scripts
_directionsGO.Destroy();
}
startPos = Camera.main.ScreenToWorldPoint(startPos);
endPos.x -= 50f;
endPos.x -= 120f;
endPos = Camera.main.ScreenToWorldPoint(endPos);
_directionsGO = new GameObject("InfoLinerender");
@@ -36,6 +36,8 @@ namespace Assets.Scenes.Ride.Scripts
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Ride/ReviewArrow"), uiObject);
}
double diff = 0;
protected override void Compute()
{
if (tickOffset + ticks < record.Length)
@@ -55,7 +57,7 @@ namespace Assets.Scenes.Ride.Scripts
totalDistance = data._Distance;
}
currentlatlong = mainController.Along(totalDistance);//下一个坐标
var diff = Math.Round(totalDistance - _playerController.TotalDistance, 3) * 1000;
diff = Math.Round((totalDistance - _playerController.TotalDistance) *1000, 0);
_reviewItemScript.SetDistance(diff);
}
@@ -86,7 +88,7 @@ namespace Assets.Scenes.Ride.Scripts
{
infoPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/OnlineInfoPanel"), uiObject);
}
var infoPos = playerScreenPos + new Vector3(100f, 60f, 0f);
var infoPos = playerScreenPos + new Vector3(150f, 60f, 0f);
((RectTransform)infoPanel.transform).position = infoPos;
CreateInfoLine(playerScreenPos, infoPos);
var infoHead = infoPanel.transform.Find("Head").GetComponent<RawImage>();
@@ -100,7 +102,7 @@ namespace Assets.Scenes.Ride.Scripts
var infoDistance = infoPanel.transform.Find("Distance").GetComponent<Text>();
if (_playerController != null)
{
infoDistance.text = ((totalDistance - _playerController.TotalDistance) * 1000).ToString("f0") + "M";
infoDistance.text = diff >0? $"+{diff}M" : $"{diff}M";
}
var infoWKG = infoPanel.transform.Find("WKG").GetComponent<Text>();
if (Weight + BikeWeight != 0) {
@@ -120,7 +122,7 @@ namespace Assets.Scenes.Ride.Scripts
_directionsGO.Destroy();
}
startPos = Camera.main.ScreenToWorldPoint(startPos);
endPos.x -= 80f;
endPos.x -= 120f;
endPos = Camera.main.ScreenToWorldPoint(endPos);
_directionsGO = new GameObject("InfoLinerender");
+21 -8
View File
@@ -11,10 +11,6 @@ namespace Assets.Scenes.Ride.Scripts
{
#region 骑行逻辑
TrailRenderer trail;
//前面的人
public double frontOffset { set; get; } = double.NegativeInfinity;
//后面的人
public double backOffset { set; get; } = double.MaxValue;
protected override void Init()
{
@@ -52,12 +48,29 @@ namespace Assets.Scenes.Ride.Scripts
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
#if UNITY_EDITOR
power = 3000;//测试功率
power = 500;//测试功率
#endif
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
distance = mainController.UpdateDistance(speed);
totalDistance += distance;
if (power > 0)
{
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
distance = mainController.UpdateDistance(speed);
totalDistance += distance;
}
//计算累计爬升
if (CurrentIndex > 0)
{
totalClimb = 0;
for (int i = 1; i <= CurrentIndex; i++)
{
var diff = mapData.List[i].Elevation - mapData.List[i - 1].Elevation;
if (diff > 0)
{
totalClimb += diff;
}
}
}
if (!stopRecord)
{
@@ -127,13 +127,13 @@ namespace Assets.Scenes.Ride.Scripts
decimal diffAbs = Math.Abs(diff);
if (diffAbs <= 200)
{
if (!dat.Contains(item))
//if (!dat.Contains(item))
dat.Add(item);
}
if (diff <= 0 && diff > -200)
{
item.y += 0.15f;
if (!dat.Contains(item))
//if (!dat.Contains(item))
path.Add(item);
}
}
@@ -201,20 +201,20 @@ namespace Assets.Scenes.Ride.Scripts
_directionsGO.transform.parent = transform;
var lineRender = _directionsGO.AddComponent<LineRenderer>();
//lineRender.material = new Material(Shader.Find("Sprites/Default"));
lineRender.material = Resources.Load<Material>("UI/Material/color8");
lineRender.material = Resources.Load<Material>("UI/Material/3");
var dat = feat.Points[0];
ColorUtility.TryParseHtmlString("#FF2742", out Color c);
lineRender.endColor = new Color(1,1,1,0.65f);
lineRender.startColor = new Color(1, 1, 1, 0.65f);
//设置宽度
lineRender.startWidth = 1f;
lineRender.endWidth = 1f;
lineRender.startWidth = 1.5f;
lineRender.endWidth = 1.5f;
lineRender.positionCount = dat.Count;
lineRender.SetPositions(feat.Points[0].ToArray());
lineRender.loop = false;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 10;
//lineRender.numCornerVertices = 30;
}
@@ -229,9 +229,9 @@ namespace Assets.Scenes.Ride.Scripts
_pathRoute.transform.parent = transform;
var lineRender = _pathRoute.AddComponent<LineRenderer>();
//lineRender.material = new Material(Shader.Find("Sprites/Default"));
var color7 = Resources.Load<Material>("UI/Material/color7");
//var color7 = Resources.Load<Material>("UI/Material/color7");
var Graph2 = Resources.Load<Material>("UI/Material/3dGraph2");
lineRender.materials = new Material[] { color7, Graph2 };
lineRender.materials = new Material[] { Graph2 };
lineRender.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f);
lineRender.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f);
@@ -242,7 +242,7 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.SetPositions(feat.ToArray());
lineRender.loop = false;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 10;
//lineRender.numCornerVertices = 10;
//
lineRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lineRender.allowOcclusionWhenDynamic = false;
+21 -12
View File
@@ -65,6 +65,7 @@ namespace Assets.Scenes.Ride.Scripts
RawImage altitudeGraph;//海拔图
Image leftImage;
Image rightImage;
Image area;
#endregion
#region 控制器
@@ -166,6 +167,7 @@ namespace Assets.Scenes.Ride.Scripts
altitudeGraph = transform.Find("Panel/TitlePanel/AltitudeGraph").GetComponent<RawImage>();
leftImage = transform.Find("Panel/TitlePanel/Left").GetComponent<Image>();
rightImage = transform.Find("Panel/TitlePanel/Right").GetComponent<Image>();
area = transform.Find("Panel/TitlePanel/Area").GetComponent<Image>();
settingPanel = transform.Find("Panel/SettingPanel").gameObject;
preSlopeText = transform.Find("Panel/PreSlopePanel/PreSlopeText").GetComponent<Text>();
@@ -307,14 +309,16 @@ namespace Assets.Scenes.Ride.Scripts
{
if (mainController.routeResult != null)
{
if (mainController.routeResult.Mode == CyclingModel.Review.ToString())
{
mainController.SetCyclingModel(CyclingModel.Review);
selectPanel.SetActive(false);
var reviewFactory = reviewPanel.transform.GetComponent<ReviewFactory>();
reviewFactory.Refresh();
}
else if (mainController.routeResult.Mode == CyclingModel.Single.ToString())
#region 注释伴侣骑行的重骑和继续骑行的逻辑
//if (mainController.routeResult.Mode == CyclingModel.Review.ToString())
//{
// mainController.SetCyclingModel(CyclingModel.Review);
// selectPanel.SetActive(false);
// var reviewFactory = reviewPanel.transform.GetComponent<ReviewFactory>();
// reviewFactory.Refresh();
//}
#endregion
if (mainController.routeResult.Mode == CyclingModel.Single.ToString())
{
mainController.SetCyclingModel(CyclingModel.Single);
selectPanel.SetActive(false);
@@ -398,7 +402,7 @@ namespace Assets.Scenes.Ride.Scripts
//nextSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.NextSlopeDistance, 0, "-{0}M");
nextSlopeDistanceText.text = $"{Math.Round(playerController.NextSlopeTotalDistance, 0)}M";
currentSlopeText.text = Math.Round(playerController.CurrentSlope, 1).ToString() + "%";
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentDistance - (float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M", currentSlopeProcess);
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M", currentSlopeProcess);
totalClimb.text = Math.Round(playerController.TotalClimb, 0).ToString();
//小地图进度
var process = (float)(playerController.TotalDistance / routeInstance.Distance);
@@ -670,18 +674,23 @@ namespace Assets.Scenes.Ride.Scripts
leftImage.gameObject.SetActive(false);
rightImage.gameObject.SetActive(false);
altitudeGraph.gameObject.SetActive(false);
area.gameObject.SetActive(false);
}
else
{
var m = Screen.width / 1600D;
var start = chartDataSourceScript.GetRealTimeStart();
var end = chartDataSourceScript.GetRealTimeEnd();
var originWith = Screen.width / 1600D * 30D;
var with = Screen.width / 1600D * 286D;
var originWith = m * 30D;
var with = m * 286D;
var left = start * with + originWith;
var right = end * with + originWith;
var rectTransform = area.gameObject.GetComponent<RectTransform>();
var width = m *(float)(right - left);
rectTransform.sizeDelta = new Vector2((float)width, 40);
rectTransform.DOMoveX((float)(left), 1);
leftImage.transform.DOMoveX((float)left, 1);
rightImage.transform.DOMoveX((float)right, 1);
}