AR第二个视频发布
This commit is contained in:
parent
573aa2ff4c
commit
431d128ad8
@ -1,4 +1,5 @@
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.AR
|
||||
{
|
||||
@ -14,7 +15,7 @@ namespace Assets.AR
|
||||
|
||||
public float RouteDistance { get; set; }//线路上的距离
|
||||
|
||||
public float Lane { get; set; }//车道上的位置
|
||||
public float Lane { get; set; } //车道上的位置
|
||||
|
||||
public float BaseOffset { get; set; }//基准偏移量
|
||||
|
||||
@ -38,6 +39,8 @@ namespace Assets.AR
|
||||
|
||||
public int TestPower { get; set; }
|
||||
|
||||
public float ZOffset { get; set; }
|
||||
|
||||
//重置碰撞检测参数
|
||||
public void ResetCollisionDetectionParameters()
|
||||
{
|
||||
@ -56,13 +59,14 @@ namespace Assets.AR
|
||||
{
|
||||
PositionOffset = Vector3.up * route.CameraHeight * (-1);
|
||||
var cameraRotation = this.GetCameraRotation(this.frame - this.FrameIndexDistanceCorrection);
|
||||
var normalizeCameraRotation = Quaternion.Euler(new Vector3(cameraRotation.eulerAngles.x, cameraRotation.eulerAngles.y, cameraRotation.eulerAngles.z+ZOffset));
|
||||
|
||||
var filteredCameraPosition = this.GetFilteredCameraPosition(this.frame - this.FrameIndexDistanceCorrection);
|
||||
|
||||
var vector3 = Vector3.left * (this.route.LeftHanded ? -1f : 1f) * (this.LaneWidth * (this.Lane + this.LaneCamera) - this.BaseOffset);
|
||||
var targetPos = filteredCameraPosition + cameraRotation * (vector3 + this.PositionOffset);
|
||||
|
||||
var targetPos = filteredCameraPosition + normalizeCameraRotation * (vector3 + this.PositionOffset);
|
||||
|
||||
this.transform.position = targetPos;
|
||||
this.transform.rotation = cameraRotation * Quaternion.Euler(this.RotationOffset) * Quaternion.Euler(this.Lean);
|
||||
this.transform.rotation = normalizeCameraRotation * Quaternion.Euler(this.RotationOffset) * Quaternion.Euler(this.Lean);
|
||||
this.transform.localScale = this.Scale;
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ namespace Assets.AR
|
||||
{
|
||||
var frame = 100f;
|
||||
this.StartRegionRouteWidth = this.GetRouteLeftOffset(frame) + this.GetRouteRightOffset(frame);
|
||||
this.RiderCountInStartRow = Mathf.Max(1, Mathf.CeilToInt(this.StartRegionRouteWidth / 0.7f));
|
||||
this.RiderCountInStartRow = Mathf.Max(2, Mathf.CeilToInt(this.StartRegionRouteWidth / 0.7f));
|
||||
}
|
||||
|
||||
protected override void UpdateGameObjects(
|
||||
@ -233,10 +233,13 @@ namespace Assets.AR
|
||||
{
|
||||
if (!this.AllowStartOrder || (double)routeDistance >= 200.0)
|
||||
return routeDistance;
|
||||
var num = Mathf.Lerp((float)((double)(RiderCountInStartRow == 0 ? 0 :(startPosition - 1) / this.RiderCountInStartRow) * 2.2000000476837158 + 6.0) + this.GetStartOffset(startPosition).y, 0.0f, routeDistance / 200f);
|
||||
var start = (float)((RiderCountInStartRow == 0 ? 0 : (startPosition - 1) / this.RiderCountInStartRow) * 2.2000000476837158 + 6.0) + this.GetStartOffset(startPosition).y;
|
||||
var num = Mathf.Lerp(start , 0.0f, routeDistance / 200f);
|
||||
return routeDistance + num;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//计算碰撞距离
|
||||
protected static float GetCollisionParameter(
|
||||
float distSource,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
|
||||
@ -58,6 +59,8 @@ namespace Assets.AR
|
||||
public int VideoFrameOffset { get; set; }
|
||||
|
||||
public float CameraHeight { get; set; }
|
||||
|
||||
public float ZOffset { get; set; }
|
||||
|
||||
public float RiderScale { get; set; } = 1f;
|
||||
|
||||
@ -428,9 +431,17 @@ namespace Assets.AR
|
||||
|
||||
public void LoadData(ARRouteData data)
|
||||
{
|
||||
// //todo:修改rotation z
|
||||
// foreach (var rotation in data.CameraRotations)
|
||||
// {
|
||||
// rotation.z += 4f;
|
||||
// }
|
||||
//
|
||||
// var str = JsonConvert.SerializeObject(data);
|
||||
this.Visibility = data.Visibility;
|
||||
this.VideoFrameOffset = data.VideoFrameOffset;
|
||||
this.LeftHanded = data.LeftHanded;
|
||||
this.ZOffset = data.Zoffset;
|
||||
this.SlamSegments = data.SlamSegments;
|
||||
this.CameraHeight = data.CameraHeight;
|
||||
this.RiderScale = (double)data.RiderScale != 0.0 ? data.RiderScale : 1f;
|
||||
|
||||
@ -248,6 +248,7 @@ namespace Assets.AR
|
||||
public int VideoFrameOffsetMac = -1;
|
||||
public float CameraHeight;
|
||||
public float RiderScale = 1f;
|
||||
public float Zoffset = 0f;
|
||||
public int[] LeftSideOffsetFrames;
|
||||
public float[] LeftSideOffsets;
|
||||
public int[] RightSideOffsetFrames;
|
||||
|
||||
@ -101,16 +101,27 @@ namespace Assets.AR
|
||||
return;
|
||||
}
|
||||
|
||||
this.PlayFrameDistance();
|
||||
PlayFrameDistance();
|
||||
VideoPlayerControl.UpdateVideoPlayRate(mainRiderObject.PreSpeed, mainRiderObject.Distance);
|
||||
this.FrameIndexDistanceCorrection = this.VideoPlayerControl.FrameIndexDistanceCorrection;
|
||||
this.UpdateCameraFollowDistance();
|
||||
FrameIndexDistanceCorrection = this.VideoPlayerControl.FrameIndexDistanceCorrection;
|
||||
UpdateCameraFollowDistance();
|
||||
|
||||
base.Update();
|
||||
this.UpdateRidersVisibility();
|
||||
this.UpdateRidersLean();
|
||||
this.UpdateBackLight();
|
||||
this.SetUpVideoControlMode();
|
||||
UpdateRidersVisibility();
|
||||
UpdateRidersLean();
|
||||
UpdateBackLight();
|
||||
SetUpVideoControlMode();
|
||||
UpdateRemainingTime();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理人物快倒计时
|
||||
/// </summary>
|
||||
private void UpdateRemainingTime()
|
||||
{
|
||||
if (mainRiderObject == null) return;
|
||||
var remainingDistance = Math.Round(manager.GetMapRoute().Distance * 1000f - mainRiderObject.Distance);
|
||||
manager.ShowUpRemainTime(remainingDistance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -247,7 +258,7 @@ namespace Assets.AR
|
||||
case AR.CameraDistance.Near:
|
||||
return 1.5f;
|
||||
case AR.CameraDistance.Middle:
|
||||
return 5f;
|
||||
return 8f;
|
||||
case AR.CameraDistance.Far:
|
||||
return 10f;
|
||||
default:
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
using System;
|
||||
using Assets.Scripts.Scenes.VideoRide;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.AR
|
||||
@ -98,12 +99,14 @@ namespace Assets.AR
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
SetZOffset();
|
||||
}
|
||||
|
||||
protected override void Update()
|
||||
{
|
||||
if (this.route == null)
|
||||
return;
|
||||
SetMainRiderLane();
|
||||
base.Update();
|
||||
var num = this.Speed;
|
||||
this.Paused = this.Speed == 0;
|
||||
@ -169,7 +172,24 @@ namespace Assets.AR
|
||||
|
||||
this.lastVisibilitylevel = this.VisibilityLevel;
|
||||
}
|
||||
|
||||
|
||||
private void SetZOffset()
|
||||
{
|
||||
var manager = FindObjectOfType<VideoGameManager>();
|
||||
var map = manager.GetMapRoute();
|
||||
this.ZOffset = map.Id == 6296 ? -4f : 0f;
|
||||
}
|
||||
|
||||
private void SetMainRiderLane()
|
||||
{
|
||||
if (IsMain)
|
||||
{
|
||||
var manager = FindObjectOfType<VideoGameManager>();
|
||||
var map = manager.GetMapRoute();
|
||||
if(map.Id == 6296)
|
||||
Lane = -2f;
|
||||
}
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
|
||||
BIN
Assets/Resources/Images/AR/remain200big.png
Normal file
BIN
Assets/Resources/Images/AR/remain200big.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
140
Assets/Resources/Images/AR/remain200big.png.meta
Normal file
140
Assets/Resources/Images/AR/remain200big.png.meta
Normal file
@ -0,0 +1,140 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 596384dff8e4ac74792efb98a7050735
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Windows Store Apps
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
428
Assets/Resources/UI/Prefab/AR/Remain.prefab
Normal file
428
Assets/Resources/UI/Prefab/AR/Remain.prefab
Normal file
@ -0,0 +1,428 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &8821672318626816366
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8821672318626816367}
|
||||
- component: {fileID: 8821672318626816365}
|
||||
- component: {fileID: 8821672318626816364}
|
||||
- component: {fileID: 4827865455385428039}
|
||||
m_Layer: 5
|
||||
m_Name: Distance
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8821672318626816367
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672318626816366}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8821672319793893522}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 377, y: -110}
|
||||
m_SizeDelta: {x: 364, y: 168}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8821672318626816365
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672318626816366}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8821672318626816364
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672318626816366}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: f878f11ea5771c548ac255f4e39b8e4b, type: 3}
|
||||
m_FontSize: 168
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 168
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 200
|
||||
--- !u!114 &4827865455385428039
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672318626816366}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cc35dd113658adb47867d8c21c22fb4a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &8821672319010268339
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8821672319010268336}
|
||||
- component: {fileID: 8821672319010268350}
|
||||
- component: {fileID: 8821672319010268337}
|
||||
- component: {fileID: 8821672319010268351}
|
||||
m_Layer: 5
|
||||
m_Name: Remain
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8821672319010268336
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319010268339}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 8821672319793893522}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8821672319010268350
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319010268339}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8821672319010268337
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319010268339}
|
||||
m_Enabled: 0
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!225 &8821672319010268351
|
||||
CanvasGroup:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319010268339}
|
||||
m_Enabled: 1
|
||||
m_Alpha: 0
|
||||
m_Interactable: 1
|
||||
m_BlocksRaycasts: 1
|
||||
m_IgnoreParentGroups: 0
|
||||
--- !u!1 &8821672319686553709
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8821672319686553706}
|
||||
- component: {fileID: 8821672319686553704}
|
||||
- component: {fileID: 8821672319686553707}
|
||||
- component: {fileID: 8821672319686553705}
|
||||
m_Layer: 5
|
||||
m_Name: Title
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8821672319686553706
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319686553709}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8821672319793893522}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 405, y: -207.5}
|
||||
m_SizeDelta: {x: 254, y: 45}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8821672319686553704
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319686553709}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8821672319686553707
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319686553709}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: f878f11ea5771c548ac255f4e39b8e4b, type: 3}
|
||||
m_FontSize: 45
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 168
|
||||
m_Alignment: 1
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: REMAINING
|
||||
--- !u!114 &8821672319686553705
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319686553709}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e47f6ee11b78f3247a0b474b6c36e2cd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
key:
|
||||
--- !u!1 &8821672319793893525
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8821672319793893522}
|
||||
- component: {fileID: 8821672319793893520}
|
||||
- component: {fileID: 8821672319793893523}
|
||||
m_Layer: 5
|
||||
m_Name: Bg
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8821672319793893522
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319793893525}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 8821672318626816367}
|
||||
- {fileID: 8821672320381656758}
|
||||
- {fileID: 8821672319686553706}
|
||||
m_Father: {fileID: 8821672319010268336}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0}
|
||||
m_AnchorMax: {x: 0.5, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 275}
|
||||
m_SizeDelta: {x: 810, y: 266}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8821672319793893520
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319793893525}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8821672319793893523
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672319793893525}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 596384dff8e4ac74792efb98a7050735, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8821672320381656713
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8821672320381656758}
|
||||
- component: {fileID: 8821672320381656756}
|
||||
- component: {fileID: 8821672320381656759}
|
||||
m_Layer: 5
|
||||
m_Name: Unit
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8821672320381656758
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672320381656713}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8821672319793893522}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 182.5, y: -6}
|
||||
m_SizeDelta: {x: 57, y: 75}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8821672320381656756
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672320381656713}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8821672320381656759
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8821672320381656713}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: f878f11ea5771c548ac255f4e39b8e4b, type: 3}
|
||||
m_FontSize: 75
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 168
|
||||
m_Alignment: 6
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: M
|
||||
7
Assets/Resources/UI/Prefab/AR/Remain.prefab.meta
Normal file
7
Assets/Resources/UI/Prefab/AR/Remain.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30146295accb0944a815749fc20e4f73
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -115,9 +115,9 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
m_AnchoredPosition: {x: -28.5, y: -405.3}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 90, y: 6}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
m_Pivot: {x: 0.25, y: 1}
|
||||
--- !u!222 &4542661629369906579
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -872,7 +872,6 @@ MonoBehaviour:
|
||||
newNav: {fileID: 0}
|
||||
PowerSlider: {fileID: 7737392489142060261}
|
||||
PowerText: {fileID: 7737392488336084295}
|
||||
manager: {fileID: 0}
|
||||
--- !u!1 &7043703429314443876
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2036,7 +2035,7 @@ MonoBehaviour:
|
||||
m_HandleRect: {fileID: 7737392487993312576}
|
||||
m_Direction: 0
|
||||
m_MinValue: 0
|
||||
m_MaxValue: 2000
|
||||
m_MaxValue: 800
|
||||
m_WholeNumbers: 0
|
||||
m_Value: 0
|
||||
m_OnValueChanged:
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
{
|
||||
"zh": {
|
||||
"REMAINING": "距离终点",
|
||||
"HOT ROUTES": "热门线路",
|
||||
"Ride Now": "开始",
|
||||
"Back": "返回",
|
||||
@ -443,6 +444,7 @@
|
||||
"CancelReadyToQuit":"请取消准备后再退出!"
|
||||
},
|
||||
"en": {
|
||||
"REMAINING": "REMAINING",
|
||||
"HOT ROUTES": "HOT ROUTES",
|
||||
"Ride Now": "Ride Now",
|
||||
"Back": "Back",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -63,6 +63,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
private static readonly int AnimatorSpeed = Animator.StringToHash("speed");
|
||||
private static readonly int Grade = Animator.StringToHash("grade");
|
||||
private static readonly int Power = Animator.StringToHash("power");
|
||||
|
||||
private Camera mainCamera;
|
||||
|
||||
protected virtual void Start()
|
||||
{
|
||||
@ -71,6 +73,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
mapData = manager.GetMapData();
|
||||
ComputeNextSlope();//初始化坡度等
|
||||
bone_bottle_2 = transform.Find("bone_cable_20");
|
||||
mainCamera = Camera.main;
|
||||
}
|
||||
protected virtual void Update()
|
||||
{
|
||||
@ -247,19 +250,34 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
headWkg = head.transform.Find("wkg").GetComponent<Text>();
|
||||
}
|
||||
}
|
||||
if (head != null)
|
||||
{
|
||||
//它们的乘积就是高度
|
||||
Vector3 worldPosition = new Vector3(bone_bottle_2.position.x, bone_bottle_2.position.y+1.0f, bone_bottle_2.position.z);
|
||||
var playerScreenPos = Camera.main.WorldToScreenPoint(worldPosition);
|
||||
head.transform.position = playerScreenPos;
|
||||
ftpImage.fillAmount = (float)(wkg / 6);
|
||||
headName.text = UserName;
|
||||
headWkg.text = $"{wkg}W/KG";
|
||||
head.SetActive(bone_bottle_2.position.z > 0);
|
||||
}
|
||||
UpdateHead();
|
||||
}
|
||||
|
||||
|
||||
private void UpdateHead()
|
||||
{
|
||||
if (head == null) return;
|
||||
//update position
|
||||
var position = bone_bottle_2.position;
|
||||
var worldPosition = new Vector3(position.x, position.y + transform.localScale.y, position.z);
|
||||
var playerScreenPos = mainCamera.WorldToScreenPoint(worldPosition);
|
||||
playerScreenPos.y += 16f;
|
||||
head.transform.position = playerScreenPos;
|
||||
//update info
|
||||
ftpImage.fillAmount = (float)(wkg / 6);
|
||||
headName.text = UserName;
|
||||
headWkg.text = $"{wkg}W/KG";
|
||||
}
|
||||
|
||||
private void OnBecameInvisible()
|
||||
{
|
||||
head.SetActive(false);
|
||||
}
|
||||
|
||||
private void OnBecameVisible()
|
||||
{
|
||||
head.SetActive(true);
|
||||
}
|
||||
|
||||
public void SetStartDistance(double distance)
|
||||
{
|
||||
this.StartDistance = distance *1000;
|
||||
|
||||
@ -65,10 +65,12 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
public Dictionary<IRider, PlayerRenderer> rideObjs = new Dictionary<IRider, PlayerRenderer>();
|
||||
|
||||
private VideoUIManager _uiManager { get; set; }
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
_uiManager = FindObjectOfType<VideoUIManager>();
|
||||
trainingController = GetComponent<ARTrainingController>();
|
||||
mediaPlayer = FindObjectOfType<MediaPlayer>();
|
||||
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
||||
@ -192,19 +194,19 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var players = FindObjectsOfType<OnlineVideoPlayer>();
|
||||
foreach (var item in players)
|
||||
{
|
||||
var currentItem = list.Where(c => c.UserId == item.UserId).FirstOrDefault();
|
||||
var currentItem = list.FirstOrDefault(c => c.UserId == item.UserId);
|
||||
if (currentItem == null)
|
||||
{
|
||||
rideObjs.Remove(item);
|
||||
visibleRiders.Remove(item);
|
||||
}
|
||||
}
|
||||
var currentPlayerInfo = list.Where(c => c.IsSelf).FirstOrDefault();
|
||||
var currentPlayerInfo = list.FirstOrDefault(c => c.IsSelf);
|
||||
var needUpdateList = list.OrderByDescending(c => c.IsSelf).ToList();
|
||||
//如果当前为观察者模式且currentPlayerInfo为null随机选择以为用户观察
|
||||
if (currentPlayerInfo == null)
|
||||
{
|
||||
currentPlayerInfo = needUpdateList.Where(c => c.UserId == CurrentUserId).FirstOrDefault();
|
||||
currentPlayerInfo = needUpdateList.FirstOrDefault(c => c.UserId == CurrentUserId);
|
||||
if(currentPlayerInfo == null)
|
||||
currentPlayerInfo = needUpdateList.FirstOrDefault();
|
||||
}
|
||||
@ -212,7 +214,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
foreach (var item in needUpdateList)
|
||||
{
|
||||
var onlineRider = item as OnlineRiderModel;
|
||||
var visibleItem = visibleRiders.Where(c => c.UserId == item.UserId).FirstOrDefault();
|
||||
var visibleItem = visibleRiders.FirstOrDefault(c => c.UserId == item.UserId);
|
||||
if (visibleItem != null)
|
||||
{
|
||||
visibleItem.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
|
||||
@ -267,6 +269,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
CurrentUserId = App.CurrentUser.Id;
|
||||
CurrentPlayer = videoPlayer.GetComponent<AbstractVideoPlayer>();
|
||||
|
||||
var vp = videoPlayer.GetComponent<VideoPlayer>();
|
||||
vp.SetEndDistance(item.EndDistance);
|
||||
CurrentPlayer.SetStartDistance(item.EndDistance);
|
||||
@ -290,8 +293,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public void SetCurrentMode(ARMode aRMode)
|
||||
{
|
||||
_aRMode = aRMode;
|
||||
var uimanager = FindObjectOfType<VideoUIManager>();
|
||||
uimanager.SetCurrentMode(aRMode);
|
||||
_uiManager.SetCurrentMode(aRMode);
|
||||
if (_aRMode != ARMode.INSPECT)
|
||||
{
|
||||
CurrentUserId = App.CurrentUser.Id;
|
||||
@ -422,6 +424,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
return mapRoute;
|
||||
}
|
||||
|
||||
|
||||
public void ShowUpRemainTime(double remain)
|
||||
{
|
||||
_uiManager.ShowUpRemainTime(remain);
|
||||
}
|
||||
|
||||
//保存骑行记录
|
||||
public void SaveData(double totalDistance)
|
||||
{
|
||||
|
||||
@ -1,18 +1,22 @@
|
||||
using Assets.Scenes.Ride.Scripts.Model;
|
||||
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public class VideoPlayer : AbstractVideoPlayer
|
||||
{
|
||||
private bool isSingle = true;
|
||||
VideoUIManager _uimanager;
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
animator.Play("idle");
|
||||
userId = App.CurrentUser.Id;
|
||||
userName = App.CurrentUser.Nickname;
|
||||
_uimanager= FindObjectOfType<VideoUIManager>();
|
||||
}
|
||||
|
||||
public void SetEndDistance(double distance)
|
||||
@ -25,12 +29,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public void Complete()
|
||||
{
|
||||
start = false;
|
||||
StartCoroutine(ShowResult());
|
||||
}
|
||||
|
||||
private IEnumerator ShowResult()
|
||||
{
|
||||
yield return new WaitForSeconds(2f);
|
||||
UIManager.CloseGameRoomCountDownPanel();
|
||||
var uimanager= FindObjectOfType<VideoUIManager>();
|
||||
if (uimanager!= null)
|
||||
{
|
||||
uimanager.SaveAndShowResult();
|
||||
}
|
||||
_uimanager?.SaveAndShowResult();
|
||||
}
|
||||
|
||||
public override void ComputePlayer()
|
||||
@ -42,8 +48,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (mockpower > 0)
|
||||
{
|
||||
power = mockpower;
|
||||
cadance = 50;
|
||||
heartRate = 160;
|
||||
// cadance = 50;
|
||||
// heartRate = 160;
|
||||
}
|
||||
//#endif
|
||||
weight = App.CurrentUser.Weight;
|
||||
@ -102,6 +108,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
recorderData.PreDistance = Math.Round(preDistance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.EndDistance = Math.Round(targetData._Distance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.RiderDatas.Add(targetData);
|
||||
|
||||
//默认启用多圈
|
||||
if (isSingle && totalDistance >= mapData.TotalDistance)
|
||||
{
|
||||
@ -109,6 +116,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
}
|
||||
|
||||
private double RemainingDistance => Math.Round((mapData.TotalDistance - totalDistance) * 1000);
|
||||
|
||||
public override void Forward()
|
||||
{
|
||||
base.Forward();
|
||||
|
||||
@ -166,7 +166,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
avHeatrate.text = record.RiderDatas.Average(c => c._HeartRate.GetValueOrDefault(0)).ToString("f0");
|
||||
avSpeed.text = record.RiderDatas.Average(c => c._Speed).ToString("f1");
|
||||
maxSpeed.text = record.RiderDatas.Max(c => c._Speed).ToString("f1");
|
||||
//wkgText.text = Math.Round(power / record.CurrentUser.Weight, 2).ToString();
|
||||
wkgText.text = Math.Round(power / record.CurrentUser.Weight, 2).ToString();
|
||||
avCadence.text = record.RiderDatas.Average(c => c._Cadence).GetValueOrDefault(0).ToString("f0");
|
||||
|
||||
DNF.gameObject.SetActive(!record.IsCompleted);
|
||||
|
||||
@ -14,6 +14,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public class VideoUIManager : MonoBehaviour
|
||||
{
|
||||
GameObject button;
|
||||
GameObject remainTime;
|
||||
VideoGameManager manager;
|
||||
VideoPlayer videoPlayer;
|
||||
const float MAXPOWER = 450f;
|
||||
@ -92,6 +93,29 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowUpRemainTime(double remain)
|
||||
{
|
||||
if (remain > 110) return;
|
||||
|
||||
remain -= 20;
|
||||
|
||||
var canvas = remainTime.GetComponent<CanvasGroup>();
|
||||
if (remain <= 0)
|
||||
{
|
||||
if (canvas.alpha == 1)
|
||||
canvas.DOFade(0, 1).onComplete = () => { remainTime.SetActive(false); };
|
||||
}
|
||||
else
|
||||
{
|
||||
remainTime.SetActive(true);
|
||||
remainTime.transform.Find("Bg/Distance").GetComponent<Text>().text = remain.ToString().PadLeft(2,'0');
|
||||
|
||||
if (canvas.alpha == 0)
|
||||
canvas.DOFade(1, 1f);
|
||||
}
|
||||
}
|
||||
|
||||
private const float MAX_HEART_RATIO = 0.9f;
|
||||
private float ComputeHearRateRatio(int heartRate)
|
||||
{
|
||||
@ -124,6 +148,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
GameObject explosive { get; set; }
|
||||
private void Init()
|
||||
{
|
||||
remainTime = transform.Find("Panel/Remain").gameObject;
|
||||
infoText = transform.Find("InfoText").GetComponentInChildren<Text>();
|
||||
ComputerPanel = transform.Find("Panel/ComputerPanel").gameObject;
|
||||
WatchPanel = transform.Find("Panel/WatchPanel").gameObject;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user