Merge branch 'dev_lishuo' into dev
This commit is contained in:
commit
3e38fd65c2
27 files changed
+6400
-2963
No files matched your search
+2967
-2869
File diff suppressed because it is too large.
Load diff
@@ -133,14 +133,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
characterAnimator.speed = 1f;
|
||||
}
|
||||
//if (speed < 20 && speed >= 10)
|
||||
//{
|
||||
// characterAnimator.speed = 0.8f;
|
||||
//}
|
||||
//if (speed >= 20)
|
||||
//{
|
||||
// characterAnimator.speed = 1f;
|
||||
//}
|
||||
|
||||
if (totalDistance >= mapData.TotalDistance)
|
||||
{
|
||||
characterAnimator.SetBool("ReachEnd", true);//到达终点
|
||||
@@ -176,7 +169,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
}
|
||||
}
|
||||
//游戏开始开关
|
||||
protected virtual bool GetStart()
|
||||
public virtual bool GetStart()
|
||||
{
|
||||
return mainController.isStart;
|
||||
}
|
||||
@@ -252,16 +245,18 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
public Quaternion currentRotation;
|
||||
IEnumerator LookAtNextPos()
|
||||
{
|
||||
Quaternion neededRotation = Quaternion.LookRotation(prePos - nextPos);
|
||||
//Quaternion thisRotation = character.transform.localRotation;
|
||||
|
||||
float t = 0;
|
||||
while (t < 1.0f)
|
||||
if (prePos != nextPos)
|
||||
{
|
||||
t += Time.deltaTime / 0.5f;
|
||||
currentRotation = Quaternion.Slerp(thisRotation, neededRotation, t);
|
||||
character.transform.rotation = Quaternion.Euler(0, currentRotation.eulerAngles.y, 0);
|
||||
yield return null;
|
||||
Quaternion neededRotation = Quaternion.LookRotation(prePos - nextPos);
|
||||
|
||||
float t = 0;
|
||||
while (t < 1.0f)
|
||||
{
|
||||
t += Time.deltaTime / 0.5f;
|
||||
currentRotation = Quaternion.Slerp(thisRotation, neededRotation, t);
|
||||
character.transform.rotation = Quaternion.Euler(0, currentRotation.eulerAngles.y, 0);
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Vector3 deltaPos = Vector3.zero;
|
||||
@@ -285,13 +280,8 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
t += Time.deltaTime;
|
||||
|
||||
Vector3 v = Vector3.Lerp(prePos, nextPos, t);
|
||||
//Vector3 nextPosition = new Vector3((float)Math.Round(v.x, 2), (float)Math.Round(v.y, 2), (float)Math.Round(v.z, 2));
|
||||
//if (!nextPosition.Equals(transform.localPosition))
|
||||
{
|
||||
currentPos = v;
|
||||
transform.localPosition = v;
|
||||
//Camera.main.transform.localPosition = nextPosition;
|
||||
}
|
||||
currentPos = v;
|
||||
transform.localPosition = v;
|
||||
yield return new WaitForEndOfFrame();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,8 +329,8 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
{
|
||||
item.IsShowInfo = false;
|
||||
}
|
||||
var frontPlayer = others.Where(c => c.TotalDistance - playerController.TotalDistance < 0.5 && c.TotalDistance - playerController.TotalDistance >= 0 && !(c is PlayerController)).OrderBy(c=>c.TotalDistance).FirstOrDefault();
|
||||
var bakePlayer = others.Where(c => c.TotalDistance - playerController.TotalDistance >-0.5 && c.TotalDistance - playerController.TotalDistance < 0 && !(c is PlayerController)).OrderByDescending(c=>c.TotalDistance).FirstOrDefault();
|
||||
var frontPlayer = others.Where(c => c.TotalDistance - playerController.TotalDistance < 0.25 && c.TotalDistance - playerController.TotalDistance >= 0 && !(c is PlayerController)).OrderBy(c=>c.TotalDistance).FirstOrDefault();
|
||||
var bakePlayer = others.Where(c => c.TotalDistance - playerController.TotalDistance >-0.25 && c.TotalDistance - playerController.TotalDistance < 0 && !(c is PlayerController)).OrderByDescending(c=>c.TotalDistance).FirstOrDefault();
|
||||
if(frontPlayer != null)
|
||||
frontPlayer.IsShowInfo = true;
|
||||
if (bakePlayer != null)
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
get {
|
||||
var devices = AntConnector.Instance().discoveredDevices.Where(d => d.State == DeviceState.Connected && (d.Sensor == SensorType.Trainer));
|
||||
_device = null;//重置设备状态
|
||||
if (devices.Count() > 0)
|
||||
{
|
||||
_device = devices.OrderByDescending(d => d.Sensor == SensorType.Trainer).First();
|
||||
|
||||
@@ -29,6 +29,8 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(srcPath))
|
||||
return;
|
||||
DirectoryInfo dir = new DirectoryInfo(srcPath);
|
||||
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
|
||||
foreach (FileSystemInfo i in fileinfo)
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
public PlayerController playerController;
|
||||
GameObject _mipMapRoute;
|
||||
public RectTransform RectRoot;//rawImage
|
||||
TrailRenderer trail;
|
||||
void Start()
|
||||
{
|
||||
cyclingCotroller = FindObjectOfType<CyclingController>();
|
||||
@@ -44,7 +45,13 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
}
|
||||
RectRoot = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap").GetComponent<RectTransform>();
|
||||
}
|
||||
}
|
||||
|
||||
trail = transform.parent.Find("Sphere").GetComponent<TrailRenderer>();
|
||||
trail.startWidth = 5f;
|
||||
trail.endWidth = 5f;
|
||||
trail.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
|
||||
trail.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
|
||||
}
|
||||
float timer = 0;
|
||||
private void Update()
|
||||
{
|
||||
@@ -52,9 +59,12 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
var tr = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap/arrow");
|
||||
tr.SetSiblingIndex(9999);
|
||||
_player.transform.localPosition = _map.GeoToWorldPosition(playerController.Currentlatlong);
|
||||
var pos = _map.GeoToWorldPosition(playerController.Currentlatlong);
|
||||
pos.y += 15f;
|
||||
_player.transform.localPosition = pos;
|
||||
Vector2 vp2 = _minicamera.WorldToViewportPoint(_player.transform.localPosition);//将三维物体的世界坐标转换为视口坐标
|
||||
((RectTransform)tr.transform).anchoredPosition = new Vector2((vp2.x * RectRoot.sizeDelta.x) - (RectRoot.sizeDelta.x * 0.5f), (vp2.y * RectRoot.sizeDelta.y) - (RectRoot.sizeDelta.y * 0.5f));
|
||||
trail.enabled = playerController.GetStart();
|
||||
}
|
||||
timer += Time.deltaTime;
|
||||
|
||||
@@ -81,7 +91,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
var point = mapData.List[i].Point;
|
||||
Vector3 item = _map.GeoToWorldPosition(new Vector2d(point[0], point[1]));
|
||||
item.y += 5f;
|
||||
if (playerController.CurrentIndex >= i-1)
|
||||
if (playerController.CurrentIndex >= i)
|
||||
{
|
||||
dat.Add(item);
|
||||
}
|
||||
|
||||
@@ -35,6 +35,11 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
Vector2 vp2 = _minicamera.WorldToViewportPoint(transform.localPosition);//将三维物体的世界坐标转换为视口坐标
|
||||
tr.anchoredPosition = new Vector2((vp2.x * RectRoot.sizeDelta.x) - (RectRoot.sizeDelta.x * 0.5f), (vp2.y * RectRoot.sizeDelta.y) - (RectRoot.sizeDelta.y * 0.5f));
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyImmediate(arrow);
|
||||
//DestroyImmediate(gameObject);
|
||||
}
|
||||
t = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,36 +10,61 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
public class NumberDotween:MonoBehaviour
|
||||
{
|
||||
private Sequence mScoreSequence;
|
||||
private Sequence mProgressSequence;
|
||||
private Text text;
|
||||
private float mOldScore = 0;
|
||||
|
||||
private float mOldScoreNew = 0;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
//函数内初始化
|
||||
mScoreSequence = DOTween.Sequence();
|
||||
mProgressSequence = DOTween.Sequence();
|
||||
//函数内设置属性
|
||||
mScoreSequence.SetAutoKill(false);
|
||||
mProgressSequence.SetAutoKill(false);
|
||||
text = transform.GetComponent<Text>();
|
||||
}
|
||||
private double temp = 0;
|
||||
private int index = -1;
|
||||
private int indexNew = -1;
|
||||
public void AnimateNum(float newScore,double totalDistance,int currentIndex, int digit, string format,Image process)
|
||||
{
|
||||
if (currentIndex != index)
|
||||
if (currentIndex != indexNew)
|
||||
{
|
||||
text.text = string.Format(format, totalDistance);
|
||||
index = currentIndex;
|
||||
indexNew = currentIndex;
|
||||
process.fillAmount = 1;
|
||||
StartCoroutine(CompleteFill(process));
|
||||
}
|
||||
else
|
||||
{
|
||||
mProgressSequence.Append(DOTween.To(delegate (float value)
|
||||
{
|
||||
process.fillAmount = (float)(value / totalDistance);
|
||||
}, mOldScoreNew, newScore, 1f));
|
||||
//将更新后的值记录下来, 用于下一次滚动动画
|
||||
mOldScoreNew = newScore;
|
||||
}
|
||||
}
|
||||
|
||||
public void AnimateNumText(float newScore, double totalDistance, int currentIndex, int digit, string format, Image process)
|
||||
{
|
||||
if (currentIndex != index)
|
||||
{
|
||||
text.text = string.Format(format, totalDistance);
|
||||
index = currentIndex;
|
||||
mOldScore = (float)totalDistance;
|
||||
}
|
||||
else
|
||||
{
|
||||
mScoreSequence.Append(DOTween.To(delegate (float value)
|
||||
{
|
||||
temp = Math.Round(value, digit);
|
||||
process.fillAmount = (float)(value / totalDistance);
|
||||
//向Text组件赋值
|
||||
text.text = string.Format(format, temp);
|
||||
//if (value != newScore)
|
||||
{
|
||||
temp = Math.Round(value, digit);
|
||||
//向Text组件赋值
|
||||
text.text = string.Format(format, temp);
|
||||
}
|
||||
}, mOldScore, newScore, 1f));
|
||||
//将更新后的值记录下来, 用于下一次滚动动画
|
||||
mOldScore = newScore;
|
||||
@@ -48,7 +73,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
IEnumerator CompleteFill(Image process)
|
||||
{
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
mOldScore = 0;
|
||||
mOldScoreNew = 0;
|
||||
process.fillAmount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
|
||||
|
||||
}
|
||||
protected override bool GetStart()
|
||||
public override bool GetStart()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -50,6 +50,8 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
currentlatlong = mainController.Along(totalDistance);//下一个坐标
|
||||
|
||||
diff = Math.Round((totalDistance - _playerController.TotalDistance) * 1000, 0);
|
||||
|
||||
MoveHead(graph.transform);
|
||||
}
|
||||
double diff = 0;
|
||||
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg)
|
||||
@@ -147,7 +149,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
public void RemoveSelf()
|
||||
{
|
||||
//headPanel?.SetActive(false);
|
||||
arrowImage.gameObject.SetActive(false);
|
||||
arrowImage.gameObject?.Destroy();
|
||||
headPanel?.Destroy();
|
||||
infoPanel?.Destroy();
|
||||
transform.gameObject.Destroy();
|
||||
@@ -159,7 +161,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
var playerScreenPos = Camera.main.WorldToScreenPoint(transform.position);
|
||||
((RectTransform)arrowImage.transform).position = playerScreenPos;
|
||||
MoveHead(graph.transform);
|
||||
|
||||
if (IsShowInfo)
|
||||
{
|
||||
ShowInfoPanel(playerScreenPos);
|
||||
@@ -168,10 +170,10 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
if (infoPanel == null)
|
||||
return;
|
||||
_directionsGO?.Destroy();
|
||||
infoPanel.transform.GetComponent<CanvasGroup>().DOFade(0, 1).onComplete += () => {
|
||||
IsShowInfo = false;
|
||||
infoPanel?.Destroy();
|
||||
_directionsGO?.Destroy();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,10 +157,10 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
if (infoPanel == null)
|
||||
return;
|
||||
_directionsGO?.Destroy();
|
||||
infoPanel.transform.GetComponent<CanvasGroup>().DOFade(0, 1).onComplete += () => {
|
||||
IsShowInfo = false;
|
||||
infoPanel?.Destroy();
|
||||
_directionsGO?.Destroy();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,16 +43,26 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
//计算数据
|
||||
//speed = mainController.UpDateSpeed();
|
||||
heartRate = mainController.UpDateHeart() ?? 0;
|
||||
power = mainController.UpdatePower();
|
||||
cadance = mainController.UpdateCadence();
|
||||
weight = App.CurrentUser.Weight;
|
||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||
try
|
||||
{
|
||||
heartRate = mainController.UpDateHeart() ?? 0;
|
||||
power = mainController.UpdatePower();
|
||||
cadance = mainController.UpdateCadence();
|
||||
weight = App.CurrentUser.Weight;
|
||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||
#if UNITY_EDITOR
|
||||
System.Random rd = new System.Random();
|
||||
power = 500; //rd.Next(150, 300);////测试功率
|
||||
System.Random rd = new System.Random();
|
||||
power = rd.Next(150, 300);//测试功率
|
||||
#endif
|
||||
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
|
||||
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
heartRate = 0;
|
||||
power = 0;
|
||||
cadance = 0;
|
||||
}
|
||||
|
||||
if (power > 0)
|
||||
{
|
||||
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
|
||||
|
||||
@@ -403,42 +403,31 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
nextSlopeDistanceText.text = $"{Math.Round(playerController.NextSlopeTotalDistance, 0)}M";
|
||||
currentSlopeText.text = Math.Round(playerController.CurrentSlope, 1).ToString() + "%";
|
||||
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M", currentSlopeProcess);
|
||||
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNumText((float)playerController.CurrentDistance - (float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M", currentSlopeProcess);
|
||||
totalClimb.text = Math.Round(playerController.TotalClimb, 0).ToString();
|
||||
//小地图进度
|
||||
var process = (float)(playerController.TotalDistance / routeInstance.Distance);
|
||||
miniMapProcess.fillAmount = process;
|
||||
miniMapProcessText.text = $"{process*100:f0}%";
|
||||
//动态改变坡度图片
|
||||
ChangeSlopeImage();
|
||||
ChangeSlopeImage(nextSlopeImage, playerController.NextSlope);
|
||||
ChangeSlopeImage(currentSlopeImage, playerController.CurrentSlope);
|
||||
}
|
||||
}
|
||||
|
||||
private void ChangeSlopeImage()
|
||||
private void ChangeSlopeImage(Image image,double slope)
|
||||
{
|
||||
if (playerController.CurrentSlope >= 1)
|
||||
if (slope >= 1)
|
||||
{
|
||||
currentSlopeImage.sprite = uphill1;
|
||||
image.sprite = uphill1;
|
||||
}
|
||||
else if (playerController.CurrentSlope > -1 || playerController.CurrentSlope < 1)
|
||||
else if (slope > -1 && slope < 1)
|
||||
{
|
||||
currentSlopeImage.sprite = straight;
|
||||
image.sprite = straight;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentSlopeImage.sprite = downhill1;
|
||||
}
|
||||
//下一个坡度
|
||||
if (playerController.NextSlope >= 1)
|
||||
{
|
||||
nextSlopeImage.sprite = uphill1Small;
|
||||
}
|
||||
else if (playerController.NextSlope > -1 || playerController.NextSlope < 1)
|
||||
{
|
||||
nextSlopeImage.sprite = straightSmall;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextSlopeImage.sprite = downhill1Small;
|
||||
image.sprite = downhill1;
|
||||
}
|
||||
}
|
||||
//重置游戏
|
||||
@@ -476,15 +465,16 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
|
||||
public void StartRide(BaseEventData baseEventData)
|
||||
{
|
||||
var antConnected = mainController.CheckAnt();//初始化ant+设备
|
||||
#if UNITY_EDITOR
|
||||
antConnected = true;
|
||||
#endif
|
||||
if (!antConnected)
|
||||
// var antConnected = mainController.CheckAnt();//初始化ant+设备
|
||||
//#if UNITY_EDITOR
|
||||
// antConnected = true;
|
||||
//#endif
|
||||
// if (!antConnected)
|
||||
// {
|
||||
// alertPanel.SetActive(true);
|
||||
// }
|
||||
// else
|
||||
{
|
||||
alertPanel.SetActive(true);
|
||||
}
|
||||
else {
|
||||
//加个5秒钟倒计时
|
||||
count = 5;
|
||||
startPanel.SetActive(false);
|
||||
@@ -573,7 +563,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
clearLock = true;
|
||||
isSimple *= -1;
|
||||
simpleBtn.transform.GetComponent<Image>().sprite = isSimple == -1 ? Resources.Load<Sprite>("Images/Ride/full") : Resources.Load<Sprite>("Images/Ride/simple");
|
||||
simpleBtn.transform.GetComponent<Image>().sprite = isSimple == -1 ? Resources.Load<Sprite>("Images/Ride/full 1") : Resources.Load<Sprite>("Images/Ride/simple 1");
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user