调整多人开始骑行状态&动画控制&AR loading页面

This commit is contained in:
lishuo 2022-04-18 19:13:16 +08:00
parent 995aef63f8
commit 8150b99411
11 changed files with 13367 additions and 1895 deletions

View File

@ -39,9 +39,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25000006
m_TransitionDuration: 0.25000003
m_TransitionOffset: 0
m_ExitTime: 0.06949831
m_ExitTime: 0.011975697
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -156,31 +156,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-6558742838094518040
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 4
m_ConditionEvent: speed
m_EventTreshold: 35
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 1.0034323
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6280473346169069233
AnimatorState:
serializedVersion: 5
@ -418,6 +393,31 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-4041146987074567963
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: bearing
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.24999988
m_TransitionOffset: 0.00000015549041
m_ExitTime: 0.99523795
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-3823386753831176018
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -450,8 +450,7 @@ AnimatorState:
m_Name: evenToFast
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 5343670558689370237}
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -496,31 +495,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-3565907340479691613
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 4
m_ConditionEvent: bearing
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 4213284675513532716}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.24999988
m_TransitionOffset: 0.00000014305083
m_ExitTime: 1.0074285
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-3209598778822214922
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -571,40 +545,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-3203783344222926689
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: speed
m_EventTreshold: 35
- m_ConditionMode: 4
m_ConditionEvent: grade
m_EventTreshold: 5
- m_ConditionMode: 3
m_ConditionEvent: bearing
m_EventTreshold: -1
- m_ConditionMode: 4
m_ConditionEvent: bearing
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3789228838010061756}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0.0035938977
m_ExitTime: 1.000317
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-2947092496674604214
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -696,8 +636,8 @@ AnimatorState:
- {fileID: -8596154552645026292}
- {fileID: -1707437159815693159}
- {fileID: 8297486244209268188}
- {fileID: -3203783344222926689}
- {fileID: -1277019209237619461}
- {fileID: 2157945838762678729}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -742,6 +682,31 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-2448630386238416150
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 4
m_ConditionEvent: bearing
m_EventTreshold: -1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.24999976
m_TransitionOffset: 0
m_ExitTime: 0.9978974
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 2
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1109 &-2159963661882776293
AnimatorTransition:
m_ObjectHideFlags: 1
@ -931,10 +896,10 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -6558742838094518040}
- {fileID: -142965112669115902}
- {fileID: 1148195544466508220}
- {fileID: 1862662143567928649}
- {fileID: -2448630386238416150}
- {fileID: -1348034233613075618}
- {fileID: 6643453857259642113}
- {fileID: -4041146987074567963}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -1052,6 +1017,37 @@ AnimatorStateMachine:
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -6197807439964194722}
--- !u!1101 &-1348034233613075618
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: bearing
m_EventTreshold: -1
- m_ConditionMode: 4
m_ConditionEvent: bearing
m_EventTreshold: 1
- m_ConditionMode: 3
m_ConditionEvent: grade
m_EventTreshold: 5
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1696406813102555496}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.24999988
m_TransitionOffset: 0.00000015549045
m_ExitTime: 0.99010277
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-1277019209237619461
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -1133,31 +1129,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-142965112669115902
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: grade
m_EventTreshold: 5
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1696406813102555496}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25000012
m_TransitionOffset: 0
m_ExitTime: 0.99818265
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@ -1386,7 +1357,7 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &1148195544466508220
--- !u!1101 &1527201953609581908
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -1394,22 +1365,19 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: bearing
m_EventTreshold: 1
- m_ConditionMode: 4
m_ConditionEvent: bearing
m_EventTreshold: -1
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_DstState: {fileID: 4213284675513532716}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 1.0017759
m_HasExitTime: 1
m_ExitTime: 1.0004635
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
@ -1436,7 +1404,7 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1862662143567928649
--- !u!1101 &2157945838762678729
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -1444,18 +1412,27 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 3
m_ConditionEvent: bearing
m_EventTreshold: -1
- m_ConditionMode: 4
m_ConditionEvent: speed
m_ConditionEvent: bearing
m_EventTreshold: 1
- m_ConditionMode: 3
m_ConditionEvent: speed
m_EventTreshold: 35
- m_ConditionMode: 4
m_ConditionEvent: grade
m_EventTreshold: 5
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_DstState: {fileID: -1674479558448565141}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 1.0045319
m_TransitionOffset: 0.0039468156
m_ExitTime: 0.9988009
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -1544,8 +1521,8 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -3565907340479691613}
- {fileID: 5171103678275581170}
- {fileID: 1527201953609581908}
- {fileID: 7241215737975398068}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -1712,28 +1689,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5343670558689370237
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1674479558448565141}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.24999994
m_TransitionOffset: 0
m_ExitTime: 0.9883946
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &5931569063321047081
AnimatorState:
serializedVersion: 5
@ -1826,6 +1781,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6643453857259642113
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 4
m_ConditionEvent: speed
m_EventTreshold: 35
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1921903986252914710}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.99825764
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1109 &6964856304486252921
AnimatorTransition:
m_ObjectHideFlags: 1
@ -1890,6 +1870,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &7241215737975398068
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 4
m_ConditionEvent: speed
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 4213284675513532716}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.99571407
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &7764372601415394234
AnimatorStateTransition:
m_ObjectHideFlags: 1

View File

@ -206,7 +206,7 @@ ModelImporter:
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlend: 1
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0

View File

@ -231,7 +231,7 @@ ModelImporter:
takeName: Take 001
internalID: 0
firstFrame: 70
lastFrame: 291
lastFrame: 155
wrapMode: 0
orientationOffsetY: 0
level: 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48419157f2d4c6149becfaea81a2fd51
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -39,7 +39,7 @@ namespace Assets.Scripts.Scenes.VideoRide
public double totalClimb;
public Vector2d currentlatLon { get; set; }
public int currentIndex;
protected float bearing = 0f;
public float bearing = 0f;
protected MapDataModel mapData;
protected bool isHit = false;
protected RaycastHit hit;
@ -74,16 +74,17 @@ namespace Assets.Scripts.Scenes.VideoRide
protected virtual void Update()
{
timer -= Time.deltaTime;
ComputeAnimator();//控制动画
CreateHeadImage();
while (timer <= 0)
{
try
{
ComputeAnimator();//控制动画
ComputeNextSlope();//计算下一个坡度
ComputePlayer();//计算人物属性
if (manager.IsStart())
if (GetStart())
{
ticks++;
Forward();
@ -118,16 +119,21 @@ namespace Assets.Scripts.Scenes.VideoRide
isHit = Physics.Raycast(ray, out hit, 1f, 1 << 0, QueryTriggerInteraction.Collide);
}
protected virtual bool GetStart()
{
return true;
}
//动画状态机
protected virtual void ComputeAnimator()
{
if (animator != null)
{
animator.SetFloat("preSpeed", (float)preSpeed);
animator.SetFloat("speed", (float)speed);
animator.SetFloat("grade", (float)currentSlope);
animator.SetFloat("power", (float)power);
animator.SetFloat("bearing", bearing);
}
}
protected virtual int GetCurrentFrame()

View File

@ -10,7 +10,7 @@ using UnityEngine.UI;
namespace Assets.Scripts.Scenes.VideoRide
{
public struct ContactInfo
public class ContactInfo
{
public string Name;
public string Gender;
@ -69,7 +69,8 @@ namespace Assets.Scripts.Scenes.VideoRide
var totalDitance = manager.GetMapData().TotalDistance;
var currentDistance = manager.CurrentPlayer.totalDistance;
var currenList = FindObjectsOfType<ListItem>();//当前列表
//var currenList = FindObjectsOfType<ListItem>();//当前列表
var currenList = GetComponentsInChildren<ListItem>(true);
var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);//最新列表
list = list.Where(c => c.Id != App.CurrentUser.Id).ToList();
if (currenList.Count() == 0 && list.Count() > 0)
@ -83,6 +84,8 @@ namespace Assets.Scripts.Scenes.VideoRide
//var currenList = FindObjectsOfType<ListItem>();//当前列表
//var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);//最新列表
var currentPlayer = FindObjectOfType<VideoPlayer>();
foreach (ListItem o in currenList)
{
if (currentPlayer.UserId.ToString() == o.Id)
@ -91,14 +94,26 @@ namespace Assets.Scripts.Scenes.VideoRide
if (needUpdate != null)
{
var left = Math.Round((needUpdate.EndDistance - manager.CurrentPlayer.totalDistance) * 1000);
//var right = (needUpdate.EndDistance % totalDitance - totalDitance - currentDistance) * 1000;
//var diff = Math.Abs(left) > Math.Abs(right) ? right : left;
o.UpdateItem(needUpdate.Name, left.ToString() + "M", needUpdate.Id.ToString());
//o.gameObject.SetActive(true);
o.gameObject.SetActive(true);
}
else
{
//o.gameObject.SetActive(false);
o.gameObject.SetActive(false);
}
}
foreach (var item in list)
{
var newOne = _contactList.Where(c => c.id == item.Id.ToString()).FirstOrDefault();
if (newOne == null)
{
var one = new ContactInfo();
one.Name = item.Name;
one.Gender = "";
one.id = item.Id.ToString();
_contactList.Add(one);
_recyclableScrollRect.ReloadData();
}
}
timer +=1f;

View File

@ -18,6 +18,7 @@ using Assets.Scenes.Ride.Scripts.Model.RiderModels;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using Helper = Assets.Scenes.Ride.Scripts.Helper;
using System.Collections;
namespace Assets.Scripts.Scenes.VideoRide
{
@ -78,6 +79,7 @@ namespace Assets.Scripts.Scenes.VideoRide
MockDirection();
infoPanel = Resources.Load<GameObject>("UI/Prefab/AR/VideoPlayerHead");
OnlinePlayer = Resources.Load<GameObject>("UI/Prefab/OnlineVideoPlayer");
StartCoroutine(Init());
}
void Start()
{
@ -108,8 +110,16 @@ namespace Assets.Scripts.Scenes.VideoRide
endDistance = 0;
//倒计时5s开始
SetCyclingModel(CyclingModel.Single);
videoLoading = FindObjectOfType<VideoLoading>();
}
private IEnumerator Init()
{
yield return null;
videoLoading.Init();//初始化loading页面
}
VideoLoading videoLoading { get; set; }
// Update is called once per frame
float timer = 1f;
void Update()
@ -474,6 +484,10 @@ namespace Assets.Scripts.Scenes.VideoRide
{
return UIManager.Instance.loginRegOptions.GetCountryImage(code);
}
public Texture GetCountryImageByName(string name)
{
return UIManager.Instance.loginRegOptions.GetCountryImageByName(name);
}
//截图
protected void CaptureCamera(Camera camera, Rect rect, string fileName)
{

View File

@ -8,6 +8,9 @@ using UnityEngine.UI;
using DG.Tweening;
using UnityEngine.SceneManagement;
using UnityEngine.EventSystems;
using Assets.Scenes.Ride.Scripts;
using Assets.Scripts.Apis.Models;
using System.Linq;
namespace Assets.Scripts.Scenes.VideoRide
{
@ -17,6 +20,42 @@ namespace Assets.Scripts.Scenes.VideoRide
UnityWebRequest request { get; set; }
VideoGameManager manager { get; set; }
// Start is called before the first frame update
protected Text mapName;
protected RawImage mapRouteImage;
protected CanvasGroup canvasGroup;
protected Slider slider;
protected Text processText;
protected Text rideNowText;
protected Button rideNow;
protected Button cancel;
protected Text mapDescText;
protected Text distance;
protected Text elevaction;
protected Text slope;
protected GameObject panel;
protected GameObject loadingPanel { get; set; }
protected Text level;
protected Text rideNum;
protected Text uploadByUserName;
protected RawImage head;
protected RawImage country;
protected RawImage mapCountry;
protected RawImage altitudeGraph;
protected Transform mapRanking;
protected Text mapId;
protected float process = 0;//0-100 %
public float targetAlpha = 0f;
public float alphaSpeed = 2.0f;
private bool depressFlag = false;
private void Awake()
{
}
void Start()
{
manager = FindObjectOfType<VideoGameManager>();
@ -77,6 +116,12 @@ namespace Assets.Scripts.Scenes.VideoRide
SceneManager.LoadScene("MainScene");
});
}
public void Init()
{
InitGameObject();
InitGameObjectData();
}
//进入观察模式
private void InspectHandler(BaseEventData data)
{
@ -89,10 +134,154 @@ namespace Assets.Scripts.Scenes.VideoRide
};
}
private void InitGameObject()
{
panel = transform.Find("Panel").gameObject;
mapName = panel.transform.Find("MapName").GetComponent<Text>();
distance = panel.transform.Find("Distance").GetComponent<Text>();
elevaction = panel.transform.Find("Elevaction").GetComponent<Text>();
slope = panel.transform.Find("Slope").GetComponent<Text>();
mapRouteImage = panel.transform.Find("MapRouteImage").GetComponent<RawImage>();
slider = panel.transform.Find("Process").GetComponent<Slider>();
slider.gameObject.SetActive(false);
processText = panel.transform.Find("ProcessText").GetComponent<Text>();
processText.gameObject.SetActive(false);
mapDescText = panel.transform.Find("MapDesc").GetComponent<Text>();
rideNow = panel.transform.Find("RideNow").GetComponent<Button>();
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
cancel = panel.transform.Find("Cancel").GetComponent<Button>();
UIManager.AddEvent(rideNow.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, StartRide);
UIManager.AddEvent(cancel.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel);
slider.onValueChanged.AddListener((f) =>
{
processText.text = $"{(f).ToString("#0")}%";
});
level = panel.transform.Find("level/Text").GetComponent<Text>();
rideNum = panel.transform.Find("RideNum").GetComponent<Text>();
uploadByUserName = panel.transform.Find("UploadByUserName").GetComponent<Text>();
country = panel.transform.Find("UploadByCountry").GetComponent<RawImage>();
mapCountry = panel.transform.Find("Country").GetComponent<RawImage>();
head = panel.transform.Find("UploadByHead").GetComponent<RawImage>();
altitudeGraph = panel.transform.Find("AltitudeGraph").GetComponent<RawImage>();
mapRanking = panel.transform.Find("MapRanking");
mapId = panel.transform.Find("MapId").GetComponent<Text>();
}
protected void InitGameObjectData()
{
var route = manager.mapRoute;
#region
//mapName.text = route.Name;
#if UNITY_IOS || UNITY_ANDROID
enable3D = panel.transform.Find("Enable3D").gameObject;
enable3D.SetActive(route.Enable3D);
#endif
mapName.text = GetMaxString(route.Name, 40);
level.text = route.Hard;
elevaction.text = Math.Round(route.TotalClimb.GetValueOrDefault(0), 2).ToString() + "M";
slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%";
rideNum.text = route.TheHeat.ToString();
distance.text = route.Distance.ToString("f1") + "KM";
mapDescText.text = GetMaxString(route.Dec, 255);
mapId.text = $"#{route.Id.ToString()}";
var userList = ConfigHelper.mapApi.GetOnlineUserInfo(new int[] { route.UserId }).data;
if (userList.Count > 0)
{
uploadByUserName.text = userList[0].Name;
var countryUrl = App.Host + $"User/GetCountryImg?userid={userList[0].Id}";
Utils.DisplayImage(head, userList[0].HeadImage);//头像
country.texture = manager.GetCountryImageByName(userList[0].Country);//上传者国家
mapCountry.texture = manager.GetCountryImageByCode(route.CountryCode);//路书国家
}
#endregion
//查询排行榜
var list = ConfigHelper.mapApi.GetRouteRanking(route.Id, "1", 0, 10000, "");
if (list.result)
{
CreateRankingList(list.data.list);
}
}
protected void StartRide(BaseEventData baseEvent)
{
}
protected void Cancel(BaseEventData baseEvent)
{
SceneManager.LoadScene("MainScene");
}
// Update is called once per frame
void Update()
{
}
private int RankingPageSize = 10;
//创建排行榜
public void CreateRankingList(List<MapRouteRanking> list)
{
#if UNITY_IOS || UNITY_ANDROID
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/RankingItem");
var myprefab = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/MySelfRankingItem");
var viewAllbtn = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/ViewAll");
#else
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/RankingItem");
var myprefab = Resources.Load<GameObject>("UI/Prefab/Ride/MySelfRankingItem");
var viewAllbtn = Resources.Load<GameObject>("UI/Prefab/Ride/ViewAll");
#endif
var parent = panel.transform.Find("MapRanking");
var title = panel.transform.Find("RankingTitle").gameObject;
title.SetActive(list.Count != 0);
int index = 0;
foreach (var item in list)
{
index++;
if (index > RankingPageSize)
break;
GameObject newObj = (GameObject)Instantiate(prefab, parent);
var selectPlayerItemScript = newObj.GetComponent<Assets.Scenes.Ride.Scripts.RankingItemScript>();
selectPlayerItemScript.SetRanking(item.RowNumber.ToString());
selectPlayerItemScript.SetName(item.NickName);
selectPlayerItemScript.SetTimer(item.IsDNF ? "DNF" : item.TotalTime);
selectPlayerItemScript.SetHead(item.WxHeadImg);
var texture = manager.GetCountryImageByCode(item.CountryCode);
selectPlayerItemScript.SetCountry(texture);
}
//如果有自己的记录显示自己的排名
var myself = list.Where(c => c.MySelf).FirstOrDefault();
GameObject myselfObj = (GameObject)Instantiate(myprefab, parent);
var myselfItemScript = myselfObj.GetComponent<Assets.Scenes.Ride.Scripts.RankingItemScript>();
if (myself == null)
{
myselfItemScript.SetRanking("--");
myselfItemScript.SetName(App.CurrentUser.Nickname);
myselfItemScript.SetTimer("--:--:--");
myselfItemScript.SetHead(App.CurrentUser.WxHeadImg);
var texture = manager.GetCountryImageByName(App.CurrentUser.Country);
myselfItemScript.SetCountry(texture);
}
else
{
myselfItemScript.SetRanking(myself.RowNumber.ToString());
myselfItemScript.SetName(myself.NickName);
myselfItemScript.SetTimer(myself.IsDNF ? "DNF" : myself.TotalTime);
myselfItemScript.SetHead(myself.WxHeadImg);
var texture = manager.GetCountryImageByCode(myself.CountryCode);
myselfItemScript.SetCountry(texture);
}
//显示查询全部按钮
if (list.Count > 0)
{
GameObject ViewAll = (GameObject)Instantiate(viewAllbtn, parent);
UIManager.AddEvent(ViewAll, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
{
Application.OpenURL($"{App.CurrentUser.WebHost}Routes/{manager.mapRoute.Id}?Token={App.CurrentUser.cookie}");
});
}
}
protected string GetMaxString(string value, int length)
{
var s = Helper.SubStr(value, length);
return s;
}
}
}

View File

@ -18,6 +18,11 @@ namespace Assets.Scripts.Scenes.VideoRide
UserName = App.CurrentUser.Nickname;
}
protected override bool GetStart()
{
return manager.IsStart();
}
protected override void Update()
{
base.Update();
@ -38,25 +43,23 @@ namespace Assets.Scripts.Scenes.VideoRide
protected override void ComputeAnimator()
{
base.ComputeAnimator();
var mainFrame = manager.GetCurrentFrame();
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
bearing = result?.Value ?? 0;
animator.SetFloat("bearing", bearing);
}
protected override void ComputePlayer()
{
heartRate = manager.UpDateHeart();
power = manager.UpdatePower();
cadance = manager.UpdateCadence();
#if UNITY_EDITOR
power = 0;
//#if UNITY_EDITOR
power = 150;
cadance = 150;
heartRate = 160;
#endif
//#endif
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
wkg = Math.Round(power / weight, 2);
var mainFrame = manager.GetCurrentFrame();
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
bearing = result?.Value ?? 0;
//发送阻力
manager.TrackResistance(currentSlope);
base.ComputePlayer();