在线用户和影子选手信息面板,小地图已经骑行路线
This commit is contained in:
1 parent
53ec9c60ac
commit
87d581291b
25 files changed
+4332
-3675
No files matched your search
@@ -9,16 +9,23 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
public class OtherPlayerController : AbstractPlayer
|
||||
{
|
||||
public string[] record;
|
||||
public string[] record { set; get; }
|
||||
public ReviewItemScript _reviewItemScript;
|
||||
public PlayerController _playerController;
|
||||
RawImage head;
|
||||
GameObject headPanel;
|
||||
GameObject infoPanel;
|
||||
|
||||
public int tickOffset = 0;
|
||||
Image arrowImage;
|
||||
GameObject reviewInfoPanel;
|
||||
Transform uiObject;
|
||||
|
||||
string nickName;
|
||||
string weightKgStr;
|
||||
|
||||
public double Weight { get; set; }
|
||||
public double BikeWeight { get; set; }
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
@@ -34,22 +41,28 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
if (tickOffset + ticks < record.Length)
|
||||
{
|
||||
var data = TargetData.Read(record[tickOffset + ticks - 1]);
|
||||
power = data._Power;
|
||||
speed = data._Speed;
|
||||
distance = data._Speed/3600;
|
||||
totalDistance = data._Distance;
|
||||
}
|
||||
else
|
||||
{
|
||||
var data = TargetData.Read(record[record.Length - 1]);
|
||||
power = data._Power;
|
||||
speed = data._Speed;
|
||||
distance = data._Speed / 3600;
|
||||
totalDistance = data._Distance;
|
||||
}
|
||||
currentlatlong = mainController.Along(totalDistance);//下一个坐标
|
||||
var diff = Math.Round(totalDistance - _playerController.TotalDistance, 3) * 1000;
|
||||
_reviewItemScript.SetDistance(diff);
|
||||
|
||||
}
|
||||
public void SetController(ReviewItemScript reviewItemScript)
|
||||
{
|
||||
_reviewItemScript = reviewItemScript;
|
||||
nickName = _reviewItemScript.GetName();
|
||||
}
|
||||
public void MoveHead(Transform parent,Vector3 nextPosition)
|
||||
{
|
||||
@@ -66,9 +79,86 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
}
|
||||
headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.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>();
|
||||
if (Weight + BikeWeight != 0) {
|
||||
weightKgStr = (power / (Weight + BikeWeight)).ToString("f2")+"W/KG";
|
||||
infoWKG.text = weightKgStr;
|
||||
}
|
||||
|
||||
var speedText = infoPanel.transform.Find("Speed").GetComponent<Text>();
|
||||
speedText.text = speed.ToString("f1") + "KM/H";
|
||||
}
|
||||
|
||||
GameObject _directionsGO;
|
||||
void CreateInfoLine(Vector3 startPos, Vector3 endPos)
|
||||
{
|
||||
if (_directionsGO != null)
|
||||
{
|
||||
_directionsGO.Destroy();
|
||||
}
|
||||
startPos = Camera.main.ScreenToWorldPoint(startPos);
|
||||
endPos.x -= 80f;
|
||||
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(1, 1f, 1f, 0.65f);
|
||||
lineRender.startColor = new Color(1, 1f, 1f, 0.65f);
|
||||
|
||||
//设置宽度
|
||||
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;
|
||||
}
|
||||
|
||||
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;//Camera.main.WorldToScreenPoint(transform.position);
|
||||
if (IsShowInfo)
|
||||
{
|
||||
ShowInfoPanel(playerScreenPos);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (infoPanel == null)
|
||||
return;
|
||||
infoPanel.transform.GetComponent<CanvasGroup>().DOFade(0, 1).onComplete += () => {
|
||||
IsShowInfo = false;
|
||||
infoPanel?.Destroy();
|
||||
_directionsGO?.Destroy();
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user