赛事逻辑细节调整

This commit is contained in:
lishuo committed 2021-07-09 18:16:50 +08:00
1 parent b2a527f518
commit eb1803c9ef
25 files changed
+6190 -2935

No files matched your search

@@ -7,6 +7,7 @@ using System;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
using Mapbox.Utils;
namespace Assets.Scenes.Ride.Scripts
{
@@ -31,6 +32,13 @@ namespace Assets.Scenes.Ride.Scripts
if (mainController.cyclingController.Mode == CyclingModel.Competition)
{
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Match/CompetitionArrow"), uiObject);
//比赛模式
if (!string.IsNullOrEmpty(headUrl))
{
var rawImge = arrowImage.transform.Find("Head").GetComponent<RawImage>();
Utils.DisplayImage(rawImge, headUrl, true);
rawImge.gameObject.SetActive(true);
}
}
else
{
@@ -55,7 +63,7 @@ namespace Assets.Scenes.Ride.Scripts
}
}
double diff = 0;
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg,int index=0)
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg,Vector2d point,int index=0)
{
totalDistance = _totalDistance;
distance = _distance;
@@ -63,8 +71,12 @@ namespace Assets.Scenes.Ride.Scripts
nickName = Name;
weightKgStr = weightKg.ToString("f2") + "W/KG";
CurrentIndex = index;
//Point = point;
currentlatlong = point;
}
public Vector2d Point { get; set; }
private string headUrl;
public void SetHead(string url )
{
@@ -108,6 +120,8 @@ namespace Assets.Scenes.Ride.Scripts
infoPanel?.Destroy();
transform.gameObject.Destroy();
}
TrailRenderer trailRenderer { get; set; }
protected override void AfterExcute()
{
@@ -117,9 +131,34 @@ namespace Assets.Scenes.Ride.Scripts
{
playerScreenPos.y += 10f;
}
//如果观察的是当前用户
//如果观察的是当前用户 隐藏UI 添加trailrender
var iscurrentUser = mainController.currentPlayer.UserId == UserId;
arrowImage.gameObject.SetActive(!iscurrentUser);
if (iscurrentUser && trailRenderer == null)
{
trailRenderer = gameObject.AddComponent<TrailRenderer>();
trailRenderer = FindObjectOfType<TrailRenderer>();
//var color7 = Resources.Load<Material>("UI/Material/color7");
var Graph2 = Resources.Load<Material>("UI/Material/3dGraph2");
trailRenderer.materials = new Material[] { Graph2 };
trailRenderer.time = 30;
trailRenderer.startWidth = 1f;
trailRenderer.endWidth = 1f;
trailRenderer.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
trailRenderer.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
trailRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
trailRenderer.allowOcclusionWhenDynamic = false;
trailRenderer.textureMode = LineTextureMode.Tile;
trailRenderer.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
trailRenderer.receiveShadows = false;
trailRenderer.rayTracingMode = UnityEngine.Experimental.Rendering.RayTracingMode.Off;
}
//如果不是当前用户则销毁轨迹效果
if (!iscurrentUser)
{
trailRenderer?.Destroy();
}
((RectTransform)arrowImage.transform).position = playerScreenPos;
if (IsShowInfo)
@@ -197,10 +236,31 @@ namespace Assets.Scenes.Ride.Scripts
}
else
{
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
if (UserId != mainController.currentPlayer.UserId)
{
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
}
else
{
int nextIndex = CurrentIndex;
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;
graph.HorizontalScrolling += offset;
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);
}
if (head == null)
{
head = headPanel.GetComponentInChildren<RawImage>();
@@ -219,13 +279,21 @@ namespace Assets.Scenes.Ride.Scripts
{
MoveHead();
var rect = ((RectTransform)(headPanel.transform));
//如果切换到当前用户,当前用户头像变大
//如果切换到当前用户,当前用户头像变大,并且只显示当前用户
if (mainController.currentPlayer.UserId == UserId)
{
headPanel.SetActive(true);
rect.DOScale(new Vector3(1.5f, 1.5f, 1.5f), 0.5f);
//移动海拔图
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
graph.HorizontalScrolling += offset;
}
else
{
headPanel.SetActive(false);
rect.DOScale(new Vector3(1f, 1f, 1f), 0.5f);
}
}