在线用户和影子选手信息面板,小地图已经骑行路线

This commit is contained in:
lishuo committed 2021-05-12 18:51:03 +08:00
1 parent 53ec9c60ac
commit 87d581291b
25 files changed
+4332 -3675

No files matched your search

@@ -17,12 +17,15 @@ namespace Assets.Scenes.Ride.Scripts
GameObject headPanel;
Image arrowImage;
GameObject reviewInfoPanel;
GameObject infoPanel;
Transform uiObject;
GraphChartBase graph;
ChartDataSourceScript chartDataSourceScript;
string nickName;
string weightKgStr;
protected override void Init()
{
base.Init();
@@ -45,21 +48,20 @@ namespace Assets.Scenes.Ride.Scripts
protected override void Compute()
{
currentlatlong = mainController.Along(totalDistance);//下一个坐标
//var currentUser = cyclingExcutor.riders.Where(c => c.UserId == UserId).FirstOrDefault();
//var currentUser = cyclingExcutor?.riders.Where(c => c.UserId == UserId).FirstOrDefault();
//if (currentUser == null)
//{
// RemoveSelf();
//}
}
public void SetDistance(double _distance)
{
}
public void SetTotalDistance(double _totalDistance, double _distance)
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg)
{
totalDistance = _totalDistance;
distance = _distance;
speed = distance*3600;
nickName = Name;
weightKgStr = weightKg.ToString("f2") + "W/KG";
}
public int GetCurrentIndex(double endistance,MapDataModel mapDataModel)
@@ -111,15 +113,91 @@ namespace Assets.Scenes.Ride.Scripts
headPanel.transform.DOMove(new Vector3(itemPosition.x, itemPosition.y, 0), 1);
}
public void ShowInfoPanel(Vector3 playerScreenPos)
{
if (infoPanel == null)
{
infoPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/OnlineInfoPanel"), uiObject);
}
var infoPos = playerScreenPos + new Vector3(100f, 60f, 0f);
((RectTransform)infoPanel.transform).position = infoPos;
CreateInfoLine(playerScreenPos, infoPos);
var infoHead = infoPanel.transform.Find("Head").GetComponent<RawImage>();
if (head != null)
{
infoHead.texture = head.texture;
}
var infoName = infoPanel.transform.Find("Name").GetComponent<Text>();
infoName.text = nickName;
var infoDistance = infoPanel.transform.Find("Distance").GetComponent<Text>();
if (_playerController != null)
{
infoDistance.text = ((totalDistance - _playerController.TotalDistance ) * 1000).ToString("f0") + "M";
}
var infoWKG = infoPanel.transform.Find("WKG").GetComponent<Text>();
infoWKG.text = weightKgStr;
var speedText = infoPanel.transform.Find("Speed").GetComponent<Text>();
speedText.text = speed.ToString("f1")+"KM/H";
}
public void RemoveSelf()
{
transform.gameObject.Destroy();
headPanel.Destroy();
headPanel?.SetActive(false);
//transform.gameObject.SetActive(false);
infoPanel?.SetActive(false);
//transform.DestroyChildren();
}
protected override void AfterExcute()
{
((RectTransform)arrowImage.transform).position = Camera.main.WorldToScreenPoint(transform.position);
var playerScreenPos = Camera.main.WorldToScreenPoint(transform.position);
((RectTransform)arrowImage.transform).position = playerScreenPos;
MoveHead(graph.transform);
if (IsShowInfo)
{
ShowInfoPanel(playerScreenPos);
}
else
{
if (infoPanel == null)
return;
infoPanel.transform.GetComponent<CanvasGroup>().DOFade(0, 1).onComplete += () => {
IsShowInfo = false;
infoPanel?.Destroy();
_directionsGO?.Destroy();
};
}
}
GameObject _directionsGO;
void CreateInfoLine(Vector3 startPos,Vector3 endPos)
{
if (_directionsGO != null)
{
_directionsGO.Destroy();
}
startPos = Camera.main.ScreenToWorldPoint(startPos);
endPos.x -= 50f;
endPos = Camera.main.ScreenToWorldPoint(endPos);
_directionsGO = new GameObject("InfoLinerender");
_directionsGO.transform.SetParent(transform);
var lineRender = _directionsGO.AddComponent<LineRenderer>();
lineRender.material = new Material(Shader.Find("Sprites/Default"));
//lineRender.material = Resources.Load<Material>("UI/Material/color8");
lineRender.endColor = new Color(0.1529412f, 0.8745098f, 0.8901961f, 1f);
lineRender.startColor = new Color(0.1529412f, 0.8745098f, 0.8901961f, 1f);
//设置宽度
lineRender.startWidth = 0.2f;
lineRender.endWidth = 0.2f;
lineRender.positionCount = 2;
lineRender.SetPositions(new Vector3[] { startPos, endPos });
lineRender.loop = false;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 10;
}
}
}