74 lines
2.6 KiB
C#
74 lines
2.6 KiB
C#
using Assets.Scenes.Ride.Scripts.Model;
|
|
using Assets.Scripts;
|
|
using DG.Tweening;
|
|
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Assets.Scenes.Ride.Scripts
|
|
{
|
|
public class OtherPlayerController : AbstractPlayer
|
|
{
|
|
public string[] record;
|
|
public ReviewItemScript _reviewItemScript;
|
|
public PlayerController _playerController;
|
|
RawImage head;
|
|
GameObject headPanel;
|
|
|
|
public int tickOffset = 0;
|
|
Image arrowImage;
|
|
GameObject reviewInfoPanel;
|
|
Transform uiObject;
|
|
protected override void Init()
|
|
{
|
|
base.Init();
|
|
_playerController = FindObjectOfType<PlayerController>();
|
|
tickOffset = mainController.preticks;
|
|
//创建UI
|
|
uiObject = transform.parent.Find("SingleUI/Panel/ArrowList");
|
|
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Ride/ReviewArrow"), uiObject);
|
|
}
|
|
|
|
protected override void Compute()
|
|
{
|
|
if (tickOffset + ticks < record.Length)
|
|
{
|
|
var data = TargetData.Read(record[tickOffset + ticks - 1]);
|
|
distance = data._Speed/3600;
|
|
totalDistance = data._Distance;
|
|
}
|
|
else
|
|
{
|
|
var data = TargetData.Read(record[record.Length - 1]);
|
|
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;
|
|
}
|
|
public void MoveHead(Transform parent,Vector3 nextPosition)
|
|
{
|
|
if (headPanel == null)
|
|
{
|
|
headPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/HeadPanel"));
|
|
headPanel.transform.parent = parent;
|
|
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
|
|
}
|
|
if (head == null)
|
|
{
|
|
head = headPanel.GetComponentInChildren<RawImage>();
|
|
head.texture = _reviewItemScript.GetHead();
|
|
}
|
|
headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
|
|
}
|
|
protected override void AfterExcute()
|
|
{
|
|
((RectTransform)arrowImage.transform).position = Camera.main.WorldToScreenPoint(transform.position);
|
|
}
|
|
}
|
|
} |