修复海拔图头像切换以及移动错位问题

This commit is contained in:
lishuo 2021-09-27 18:43:41 +08:00
parent 65e7d9c4f4
commit 75900ccf3d
10 changed files with 60 additions and 61 deletions

View File

@ -669,7 +669,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 25.87, y: -25.5} m_AnchoredPosition: {x: 25.87, y: -25.5}
m_SizeDelta: {x: 31.732483, y: 19} m_SizeDelta: {x: 31.732483, y: 20}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2602899783160591258 --- !u!222 &2602899783160591258
CanvasRenderer: CanvasRenderer:
@ -709,6 +709,6 @@ MonoBehaviour:
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 0 m_HorizontalOverflow: 0
m_VerticalOverflow: 0 m_VerticalOverflow: 1
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: 111 m_Text: 111

View File

@ -742,7 +742,6 @@ GameObject:
- component: {fileID: 4085630360285719622} - component: {fileID: 4085630360285719622}
- component: {fileID: 4085630360285719621} - component: {fileID: 4085630360285719621}
- component: {fileID: 4085630360285719623} - component: {fileID: 4085630360285719623}
- component: {fileID: 8165744897097518677}
- component: {fileID: 6147895834536267412} - component: {fileID: 6147895834536267412}
- component: {fileID: 1057269569260839362} - component: {fileID: 1057269569260839362}
m_Layer: 5 m_Layer: 5
@ -825,18 +824,6 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
radius: 10 radius: 10
--- !u!114 &8165744897097518677
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4085630360285719619}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f822eddd7a641a744a198d79e43e3f55, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &6147895834536267412 --- !u!114 &6147895834536267412
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -11,7 +11,7 @@ namespace Assets.Scenes.Ride.Scripts
{ {
public class CompetitionRankingFactory : BaseListFactory public class CompetitionRankingFactory : BaseListFactory
{ {
private bool isInit = false; public bool isInit = false;
private bool isnext = false; private bool isnext = false;
private List<CompetitionRankingSortModel> rankingList {get;set;} private List<CompetitionRankingSortModel> rankingList {get;set;}
private AbstractPlayer currentPlayer { get; set; } private AbstractPlayer currentPlayer { get; set; }

View File

@ -240,10 +240,11 @@ namespace Assets.Scenes.Ride.Scripts
protected virtual void Update() protected virtual void Update()
{ {
time -= Time.deltaTime; time -= Time.deltaTime;
while (time < 0) { while (time < 0)
{
MoveElevationImage(); MoveElevationImage();
BindDataSource(); BindDataSource();
time = 1; time += 1f;
} }
MoveCamera(); MoveCamera();
} }

View File

@ -40,7 +40,6 @@ namespace Assets.Scenes.Ride.Scripts
current = current - targetPoints > 0? current - targetPoints : 0; current = current - targetPoints > 0? current - targetPoints : 0;
} }
var ss = mData.Count - targetPoints;
var interval = currentIndex - current; var interval = currentIndex - current;
int mid = (int)(graph.DataSource.HorizontalViewSize / 2); int mid = (int)(graph.DataSource.HorizontalViewSize / 2);
//是否到达中间及以后的位置 //是否到达中间及以后的位置
@ -51,9 +50,19 @@ namespace Assets.Scenes.Ride.Scripts
{ {
current = current + interval- mid; current = current + interval- mid;
} }
if (isReachEnd)
{
current = mData.Count - targetPoints;
}
return current; return current;
} }
public double GetCurrentEnd(int currentIndex)
{
var start = GetCurrentStart(currentIndex);
return start + targetPoints;
}
public double GetRealTimeEnd() public double GetRealTimeEnd()
{ {
return (graph.HorizontalScrolling+ graph.DataSource.HorizontalViewSize) / mData.Count(); return (graph.HorizontalScrolling+ graph.DataSource.HorizontalViewSize) / mData.Count();

View File

@ -438,6 +438,7 @@ public class CyclingController : DeviceServiceMonoBase
} }
else else
{ {
Utils.DestroyChildren(selectedPlayer.transform);
var ss = Instantiate(onlineUserPrefab3d, selectedPlayer.transform); var ss = Instantiate(onlineUserPrefab3d, selectedPlayer.transform);
ss.transform.localScale = Is3dView ? MAX_SIZE : MIN_SIZE; ss.transform.localScale = Is3dView ? MAX_SIZE : MIN_SIZE;
} }
@ -571,10 +572,15 @@ public class CyclingController : DeviceServiceMonoBase
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); 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这样切换会闪一下待解决) //如果是观察者且当前第一此进入场景(TODO这样切换会闪一下待解决)
if (isWatch && currentPlayer is PlayerController) if (isWatch && (currentPlayer is PlayerController || currentPlayer == null))
{ {
var userId = onlineRiders.FirstOrDefault()?.UserId??0; var userId = onlineRiders.FirstOrDefault()?.UserId ?? 0;
ChangeCurrentPlayer(userId); ChangeCurrentPlayer(userId);
var competitionRankingFactory = FindObjectOfType<CompetitionRankingFactory>();
if (competitionRankingFactory != null)
{
competitionRankingFactory.isInit = false;
}
} }
//显示观察者头像 //显示观察者头像
} }
@ -875,6 +881,10 @@ public class CyclingController : DeviceServiceMonoBase
int index = 0; int index = 0;
var pointList = mapData.List; var pointList = mapData.List;
double sumDistance = 0; double sumDistance = 0;
if (endDistance >= mapData.TotalDistance)
{
return pointList.Count - 1;
}
for (int i = 0; i < pointList.Count; i++) for (int i = 0; i < pointList.Count; i++)
{ {
@ -887,7 +897,7 @@ public class CyclingController : DeviceServiceMonoBase
break; break;
} }
} }
index = endDistance >= mapData.TotalDistance ? index + 1 : index; index = endDistance >= mapData.TotalDistance ? pointList.Count - 1 : index;
return index; return index;
} }
public Vector2d Along(double endDistance) public Vector2d Along(double endDistance)

View File

@ -188,9 +188,9 @@ namespace Assets.Scenes.Ride.Scripts
{ {
trailRenderer?.Destroy(); trailRenderer?.Destroy();
} }
var rect = ((RectTransform)arrowImage.transform);
rect.position = new Vector3(playerScreenPos.x, playerScreenPos.y, 0);
((RectTransform)arrowImage.transform).position = playerScreenPos;
if (IsShowInfo) if (IsShowInfo)
{ {
ShowInfoPanel(playerScreenPos); ShowInfoPanel(playerScreenPos);
@ -251,52 +251,42 @@ namespace Assets.Scenes.Ride.Scripts
private double horizontalScrolling { get; set; } private double horizontalScrolling { get; set; }
private void MoveHead() private void MoveHead()
{ {
var itemIndex = chartDataSourceScript.GetViewIndex(CurrentIndex);
var m = graph.DataSource.GetPoint("Player 2", itemIndex);
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
itemPosition.x -= 12f;
itemPosition.y += 5f;
if (headPanel == null) if (headPanel == null)
{ {
var onlineHeadPanel = mainController.GetOnlineheadPanel(); var onlineHeadPanel = mainController.GetOnlineheadPanel();
headPanel = Instantiate(onlineHeadPanel); headPanel = Instantiate(onlineHeadPanel);
headPanel.transform.SetParent(graph.transform); headPanel.transform.SetParent(graph.transform);
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f); headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
headPanel.transform.position = itemPosition;
} }
else if (CurrentIndex == 1)
{
}
int nextIndex = CurrentIndex;
var viewIndex = chartDataSourceScript.GetViewIndex(nextIndex);
//人物移动 停止条件 到中间且线未加载完
if (GetStart() && chartDataSourceScript.ReachMid(viewIndex) && !chartDataSourceScript.ReachEnd())
{ {
//if (UserId != mainController.currentPlayer.UserId) var currentDistance = CurrentDistance;
//{ var distance = Distance;
// headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0); var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
//} //horizontalScrolling += offset;
//else if (UserId == mainController.currentPlayer.UserId)
{ {
int nextIndex = CurrentIndex; graph.HorizontalScrolling += offset;
var viewIndex = chartDataSourceScript.GetViewIndex(nextIndex);
//人物移动 停止条件 到中间且线未加载完
if (GetStart() && chartDataSourceScript.ReachMid(viewIndex) && !chartDataSourceScript.ReachEnd())
{
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
horizontalScrolling += offset;
if (UserId == mainController.currentPlayer.UserId)
{
graph.HorizontalScrolling = horizontalScrolling;
}
headPanel.transform.position = new Vector3(headPanel.transform.position.x, itemPosition.y, 0);
}
else
{
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
}
} }
//headPanel.transform.DOMove(new Vector3(itemPosition.x, itemPosition.y, 0), 1);
} }
//设定当前头像位置
var m = graph.DataSource.GetPoint("Player 2", viewIndex);
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
itemPosition.x -= 12f;
itemPosition.y += 5f;
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//超出边界隐藏
var start = graph.HorizontalScrolling;
var end = graph.HorizontalScrolling + graph.DataSource.HorizontalViewSize;
headPanel.SetActive( viewIndex >= start && viewIndex <= end);
//显示头像
if (head == null) if (head == null)
{ {
head = headPanel.transform.Find("Head").GetComponent<RawImage>(); head = headPanel.transform.Find("Head").GetComponent<RawImage>();
@ -319,6 +309,7 @@ namespace Assets.Scenes.Ride.Scripts
//如果切换到当前用户,当前用户头像变大,并且只显示当前用户 //如果切换到当前用户,当前用户头像变大,并且只显示当前用户
if (mainController.currentPlayer.UserId == UserId) if (mainController.currentPlayer.UserId == UserId)
{ {
headPanel.transform.SetAsLastSibling();
head.gameObject.SetActive(true); head.gameObject.SetActive(true);
headPanel.GetComponent<Image>().color = blue; headPanel.GetComponent<Image>().color = blue;
rect.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.5f); rect.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.5f);

View File

@ -161,7 +161,7 @@ namespace Assets.Scenes.Ride.Scripts
headPanel.transform.position = new Vector3(nextPosition.x, nextPosition.y, 0); headPanel.transform.position = new Vector3(nextPosition.x, nextPosition.y, 0);
//headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1); //headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
} }
headPanel.transform.SetSiblingIndex(999); headPanel.transform.SetAsLastSibling();
} }
protected override IEnumerator MoveTo() protected override IEnumerator MoveTo()

View File

@ -40,6 +40,7 @@ public class RaceItemScript : MonoBehaviour, IPointerExitHandler, IPointerEnterH
} }
public void Initial(MapCompetition mapCompetition,Transform parent,string from = "list") public void Initial(MapCompetition mapCompetition,Transform parent,string from = "list")
{ {
transform.GetComponent<Button>().onClick.RemoveAllListeners();
#if !(UNITY_ANDROID || UNITY_IOS) #if !(UNITY_ANDROID || UNITY_IOS)
transform.GetComponent<Button>().onClick.AddListener(() => transform.GetComponent<Button>().onClick.AddListener(() =>
{ {

View File

@ -78,7 +78,7 @@ public class LocalRouteItem : MonoBehaviour, IPointerExitHandler, IPointerEnterH
} }
Name.text = record.RouteName; Name.text = record.RouteName;
Time.text = record.StartTime.ToString(); Time.text = record.StartTime.ToString("HH:mm:ss dd-MM-yyyy");
RidingTime.text = $"<color={titleColor}>Riding time:</color>{Helper.FormatTicks(record.Ticks)}"; RidingTime.text = $"<color={titleColor}>Riding time:</color>{Helper.FormatTicks(record.Ticks)}";
RidingDistance.text = $"<color={titleColor}>Mileage:</color>{record.EndDistance.ToString("#0.00")}KM"; RidingDistance.text = $"<color={titleColor}>Mileage:</color>{record.EndDistance.ToString("#0.00")}KM";
Device.text = $"<color={titleColor}>Cycling equipment:</color>{record.ManufacturerName}"; Device.text = $"<color={titleColor}>Cycling equipment:</color>{record.ManufacturerName}";