观察者模式调整
This commit is contained in:
parent
69d73c26cd
commit
ec9337b446
89
Assets/Resources/UI/Prefab/AR/HeadPanel.prefab
Normal file
89
Assets/Resources/UI/Prefab/AR/HeadPanel.prefab
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2067262334617371878
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2067262334617371879}
|
||||||
|
- component: {fileID: 2067262334617371881}
|
||||||
|
- component: {fileID: 2067262334617371880}
|
||||||
|
- component: {fileID: -5485943155052992301}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HeadPanel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2067262334617371879
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2067262334617371878}
|
||||||
|
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: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 49.999996}
|
||||||
|
m_SizeDelta: {x: 16.13, y: 22}
|
||||||
|
m_Pivot: {x: 0, y: 0}
|
||||||
|
--- !u!222 &2067262334617371881
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2067262334617371878}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &2067262334617371880
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2067262334617371878}
|
||||||
|
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: eab6d6d13749eb94cb5ca787d1280ad5, 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!114 &-5485943155052992301
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2067262334617371878}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1092a970c15e99c47b4fce5495b5a7f2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
7
Assets/Resources/UI/Prefab/AR/HeadPanel.prefab.meta
Normal file
7
Assets/Resources/UI/Prefab/AR/HeadPanel.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 26711f85b9142f54f8eaa0e6f8ce5312
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -34,7 +34,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
m_AnchorMax: {x: 0, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 40, y: 0}
|
m_AnchoredPosition: {x: 20, y: 0}
|
||||||
m_SizeDelta: {x: 16, y: 16}
|
m_SizeDelta: {x: 16, y: 16}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &356461756298577286
|
--- !u!222 &356461756298577286
|
||||||
@ -108,13 +108,15 @@ RectTransform:
|
|||||||
- {fileID: 356461756806036589}
|
- {fileID: 356461756806036589}
|
||||||
- {fileID: 356461757142253271}
|
- {fileID: 356461757142253271}
|
||||||
- {fileID: 356461757161456314}
|
- {fileID: 356461757161456314}
|
||||||
|
- {fileID: 2862935674694061735}
|
||||||
|
- {fileID: 6265415831168584355}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 1}
|
m_AnchorMin: {x: 0.5, y: 1}
|
||||||
m_AnchorMax: {x: 0.5, y: 1}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 226, y: 44}
|
m_SizeDelta: {x: 226, y: 42}
|
||||||
m_Pivot: {x: 0.5, y: 1}
|
m_Pivot: {x: 0.5, y: 1}
|
||||||
--- !u!222 &356461756423929914
|
--- !u!222 &356461756423929914
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -223,7 +225,7 @@ MonoBehaviour:
|
|||||||
m_SelectedTrigger: Selected
|
m_SelectedTrigger: Selected
|
||||||
m_DisabledTrigger: Disabled
|
m_DisabledTrigger: Disabled
|
||||||
m_Interactable: 1
|
m_Interactable: 1
|
||||||
m_TargetGraphic: {fileID: 0}
|
m_TargetGraphic: {fileID: 356461756423929915}
|
||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
@ -244,7 +246,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!224 &356461756806036589
|
--- !u!224 &356461756806036589
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -337,10 +339,10 @@ RectTransform:
|
|||||||
m_Father: {fileID: 356461756423929917}
|
m_Father: {fileID: 356461756423929917}
|
||||||
m_RootOrder: 3
|
m_RootOrder: 3
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0.5}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 0.5}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 109, y: 0}
|
m_AnchoredPosition: {x: 112, y: -16}
|
||||||
m_SizeDelta: {x: 114, y: 16}
|
m_SizeDelta: {x: 120, y: 16}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &356461757142253269
|
--- !u!222 &356461757142253269
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -382,7 +384,7 @@ MonoBehaviour:
|
|||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: charles
|
m_Text: username
|
||||||
--- !u!1 &356461757161456315
|
--- !u!1 &356461757161456315
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -460,7 +462,78 @@ MonoBehaviour:
|
|||||||
m_HorizontalOverflow: 1
|
m_HorizontalOverflow: 1
|
||||||
m_VerticalOverflow: 1
|
m_VerticalOverflow: 1
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: charles
|
m_Text: 0M
|
||||||
|
--- !u!1 &3639242128612966977
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2862935674694061735}
|
||||||
|
- component: {fileID: 6570610577854439532}
|
||||||
|
- component: {fileID: 8409263225232607134}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TeamIcon
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2862935674694061735
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3639242128612966977}
|
||||||
|
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: 356461756423929917}
|
||||||
|
m_RootOrder: 5
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 39, y: 0}
|
||||||
|
m_SizeDelta: {x: 16, y: 16}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &6570610577854439532
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3639242128612966977}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &8409263225232607134
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3639242128612966977}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 2800000, guid: 46767b4c189319542a828a125c6040b1, type: 3}
|
||||||
|
m_UVRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
--- !u!1 &4435188239492566977
|
--- !u!1 &4435188239492566977
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -549,3 +622,81 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
radius: 20
|
radius: 20
|
||||||
|
--- !u!1 &8001663301043807377
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6265415831168584355}
|
||||||
|
- component: {fileID: 694393271331409097}
|
||||||
|
- component: {fileID: 2290462453924062911}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TeamName
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6265415831168584355
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8001663301043807377}
|
||||||
|
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: 356461756423929917}
|
||||||
|
m_RootOrder: 6
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 112, y: -29}
|
||||||
|
m_SizeDelta: {x: 120, y: 10}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &694393271331409097
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8001663301043807377}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &2290462453924062911
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8001663301043807377}
|
||||||
|
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: 9428f2aab98e9c34d923a9174035a197, type: 3}
|
||||||
|
m_FontSize: 8
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 3
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Team Name
|
||||||
|
|||||||
@ -317,7 +317,8 @@
|
|||||||
"NO RIDERS": "暂无用户",
|
"NO RIDERS": "暂无用户",
|
||||||
"Current Version:": "当前版本:",
|
"Current Version:": "当前版本:",
|
||||||
"Latest Version:": "最新版本:",
|
"Latest Version:": "最新版本:",
|
||||||
"Confirm participation": "确认参加活动"
|
"Confirm participation": "确认参加活动",
|
||||||
|
"Week": "周",
|
||||||
},
|
},
|
||||||
"en": {
|
"en": {
|
||||||
"HOT ROUTES": "HOT ROUTES",
|
"HOT ROUTES": "HOT ROUTES",
|
||||||
@ -629,6 +630,7 @@
|
|||||||
"NO RIDERS": "NO RIDERS",
|
"NO RIDERS": "NO RIDERS",
|
||||||
"Current Version:": "Current Version:",
|
"Current Version:": "Current Version:",
|
||||||
"Latest Version:": "Latest Version:",
|
"Latest Version:": "Latest Version:",
|
||||||
"Confirm participation": "Confirm participation"
|
"Confirm participation": "Confirm participation",
|
||||||
|
"Week": "Week",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -36,7 +36,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
protected double currentSlopeDistance;
|
protected double currentSlopeDistance;
|
||||||
protected double lastEndDistance;
|
protected double lastEndDistance;
|
||||||
public double totalClimb;
|
public double totalClimb;
|
||||||
public Vector2d currentlatLon;
|
public Vector2d currentlatLon { get; set; }
|
||||||
public int currentIndex;
|
public int currentIndex;
|
||||||
protected float bearing = 0f;
|
protected float bearing = 0f;
|
||||||
protected MapDataModel mapData;
|
protected MapDataModel mapData;
|
||||||
@ -54,7 +54,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
manager = FindObjectOfType<VideoGameManager>();
|
manager = FindObjectOfType<VideoGameManager>();
|
||||||
mapData = manager.GetMapData();
|
mapData = manager.GetMapData();
|
||||||
ComputeNextSlope();//初始化坡度等
|
ComputeNextSlope();//初始化坡度等
|
||||||
animator.Play("idle");
|
if (speed > 0)
|
||||||
|
{
|
||||||
|
animator.Play("rideLoop");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
animator.Play("idle");
|
||||||
|
}
|
||||||
camera = Camera.main;
|
camera = Camera.main;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,23 +194,55 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
preSpeed = speed;
|
preSpeed = speed;
|
||||||
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
|
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
|
||||||
wkg = Math.Round(power / weight,2);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
speed = 0;
|
speed = 0;
|
||||||
distance = 0;
|
distance = 0;
|
||||||
}
|
}
|
||||||
|
//一旦有功率就开始骑行、否则暂停
|
||||||
|
if (!manager.IsQuit() && manager.CurrentPlayer.UserId == UserId)
|
||||||
|
{
|
||||||
|
if (power > 0)
|
||||||
|
{
|
||||||
|
manager.StartGame();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Forward()
|
private void Forward()
|
||||||
{
|
{
|
||||||
distance = Math.Round(speed / 3600, 5, MidpointRounding.AwayFromZero);
|
try
|
||||||
totalDistance += distance;
|
{
|
||||||
currentlatLon = manager.Along(totalDistance);
|
if (mapData == null)
|
||||||
|
mapData = manager.GetMapData();
|
||||||
|
distance = Math.Round(speed / 3600, 5, MidpointRounding.AwayFromZero);
|
||||||
|
totalDistance += distance;
|
||||||
|
currentlatLon = manager.Along(totalDistance % mapData.TotalDistance);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ComputeVideo(){ }
|
protected virtual void ComputeVideo()
|
||||||
|
{
|
||||||
|
mapData = manager.GetMapData();
|
||||||
|
float ratio = 1;
|
||||||
|
if (currentIndex + 1 < mapData.List.Count)
|
||||||
|
{
|
||||||
|
ratio = (float)(speed / mapData.List[currentIndex + 1].Speed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ratio = (float)(speed / mapData.List[currentIndex].Speed);
|
||||||
|
}
|
||||||
|
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
|
||||||
|
return;
|
||||||
|
|
||||||
|
manager.Play(ratio);
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual void ComputeRecord() { }
|
protected virtual void ComputeRecord() { }
|
||||||
|
|
||||||
@ -211,7 +250,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
void ComputeNextSlope()
|
void ComputeNextSlope()
|
||||||
{
|
{
|
||||||
double sumDistance = 0;
|
double sumDistance = 0;
|
||||||
var mapData = manager.GetMapData();
|
mapData = manager.GetMapData();
|
||||||
if (mapData == null)
|
if (mapData == null)
|
||||||
return;
|
return;
|
||||||
var pointList = mapData.List;
|
var pointList = mapData.List;
|
||||||
@ -283,6 +322,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
|
|
||||||
public void Destroy()
|
public void Destroy()
|
||||||
{
|
{
|
||||||
|
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId == UserId)
|
||||||
|
{
|
||||||
|
manager.Pause();
|
||||||
|
}
|
||||||
head?.Destroy();
|
head?.Destroy();
|
||||||
gameObject.Destroy();
|
gameObject.Destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
using ChartAndGraph;
|
using ChartAndGraph;
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Assets.Scripts.Scenes.VideoRide
|
namespace Assets.Scripts.Scenes.VideoRide
|
||||||
@ -16,6 +18,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
Material _heavyColor;
|
Material _heavyColor;
|
||||||
|
|
||||||
|
GameObject headPanel { get; set; }
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
head = transform.Find("HeadPanel").gameObject;
|
head = transform.Find("HeadPanel").gameObject;
|
||||||
@ -33,6 +37,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Grade);
|
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Grade);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
headPanel = Resources.Load<GameObject>("UI/Prefab/AR/HeadPanel");
|
||||||
}
|
}
|
||||||
|
|
||||||
float timer = 1f;
|
float timer = 1f;
|
||||||
@ -42,7 +48,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
while (timer < 0)
|
while (timer < 0)
|
||||||
{
|
{
|
||||||
MoveCurrentPlayerHead();
|
MoveCurrentPlayerHead();
|
||||||
//MoveOnlinePlayerHead(); TODO
|
MoveOnlinePlayerHead();
|
||||||
timer += 1f;
|
timer += 1f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,13 +65,27 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
//移动当前线上其他人头像
|
//移动当前线上其他人头像
|
||||||
private void MoveOnlinePlayerHead()
|
private void MoveOnlinePlayerHead()
|
||||||
{
|
{
|
||||||
var videoPlayer = manager.CurrentPlayer;
|
var players = manager.cyclingController.riders;
|
||||||
if (videoPlayer != null)
|
var headList = FindObjectsOfType<HeadScript>();
|
||||||
|
foreach (var item in players)
|
||||||
{
|
{
|
||||||
BarChart barChart = GetComponent<BarChart>();
|
BarChart barChart = GetComponent<BarChart>();
|
||||||
Vector3 vector3 = Vector3.back;
|
Vector3 vector3 = Vector3.back;
|
||||||
barChart.GetBarTrackPosition($"Player {videoPlayer.currentIndex}", "Group 1", out vector3);
|
var currentIndex = Math.Round(item.EndDistance / manager.mapRoute.Distance * manager.GetMapData().List.Count);
|
||||||
head.transform.position = vector3;
|
barChart.GetBarTrackPosition($"Player {currentIndex}", "Group 1", out vector3);
|
||||||
|
|
||||||
|
var currentHead = headList.Where(c => c.UserId == item.UserId).FirstOrDefault();
|
||||||
|
|
||||||
|
if (currentHead == null)
|
||||||
|
{
|
||||||
|
var onlineHead = Instantiate(headPanel, transform);
|
||||||
|
onlineHead.GetComponent<HeadScript>().UserId = item.UserId;
|
||||||
|
onlineHead.transform.position = vector3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
currentHead.transform.position = vector3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
Assets/Scripts/Scenes/VideoRide/HeadScript.cs
Normal file
18
Assets/Scripts/Scenes/VideoRide/HeadScript.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Scenes.VideoRide
|
||||||
|
{
|
||||||
|
public class HeadScript : MonoBehaviour
|
||||||
|
{
|
||||||
|
public string UserName { get; set; }
|
||||||
|
public int UserId { get; set; }
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Scenes/VideoRide/HeadScript.cs.meta
Normal file
11
Assets/Scripts/Scenes/VideoRide/HeadScript.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1092a970c15e99c47b4fce5495b5a7f2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -21,9 +21,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
GameObject _player;
|
GameObject _player;
|
||||||
VideoGameManager cyclingCotroller;
|
VideoGameManager cyclingCotroller;
|
||||||
public VideoPlayer playerController;
|
public AbstractVideoPlayer playerController { get; set; }
|
||||||
GameObject _mipMapRoute;
|
GameObject _mipMapRoute;
|
||||||
public RectTransform RectRoot;//rawImage
|
public RectTransform RectRoot { get; set; }
|
||||||
TrailRenderer trail;
|
TrailRenderer trail;
|
||||||
Transform uitransform { get; set; }
|
Transform uitransform { get; set; }
|
||||||
void Start()
|
void Start()
|
||||||
@ -32,6 +32,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
|
|
||||||
if (cyclingCotroller != null)
|
if (cyclingCotroller != null)
|
||||||
{
|
{
|
||||||
|
playerController = cyclingCotroller.CurrentPlayer;
|
||||||
var mapdata = cyclingCotroller.GetMapData();
|
var mapdata = cyclingCotroller.GetMapData();
|
||||||
//初始化map
|
//初始化map
|
||||||
//var point = cyclingCotroller.GetCenterCoordinate();
|
//var point = cyclingCotroller.GetCenterCoordinate();
|
||||||
@ -58,28 +59,28 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
float timer = 0;
|
float timer = 0;
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (playerController != null)
|
if (cyclingCotroller.CurrentPlayer != null)
|
||||||
{
|
{
|
||||||
var tr = uitransform.Find("MiniMap/MiniMap/arrow");
|
var tr = uitransform.Find("MiniMap/MiniMap/arrow");
|
||||||
tr.SetSiblingIndex(9999);
|
tr.SetSiblingIndex(9999);
|
||||||
var pos = _map.GeoToWorldPosition(playerController.currentlatLon);
|
var pos = _map.GeoToWorldPosition(cyclingCotroller.CurrentPlayer.currentlatLon);
|
||||||
pos.y += 15f;
|
pos.y += 15f;
|
||||||
_player.transform.localPosition = pos;
|
_player.transform.localPosition = pos;
|
||||||
Vector2 vp2 = _minicamera.WorldToViewportPoint(_player.transform.localPosition);//将三维物体的世界坐标转换为视口坐标
|
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));
|
((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.power > 0;
|
trail.enabled = cyclingCotroller.CurrentPlayer.power > 0;
|
||||||
}
|
}
|
||||||
timer += Time.deltaTime;
|
timer += Time.deltaTime;
|
||||||
|
|
||||||
while (timer >= 1)
|
while (timer >= 1)
|
||||||
{
|
{
|
||||||
CreateMiniPath();
|
//CreateMiniPath();
|
||||||
timer = 0;
|
timer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void CreateMiniPath()
|
void CreateMiniPath()
|
||||||
{
|
{
|
||||||
if (playerController == null)
|
if (cyclingCotroller.CurrentPlayer == null)
|
||||||
return;
|
return;
|
||||||
var dat = new List<Vector3>();
|
var dat = new List<Vector3>();
|
||||||
var mapData = cyclingCotroller.GetMapData();
|
var mapData = cyclingCotroller.GetMapData();
|
||||||
@ -94,7 +95,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
var point = mapData.List[i].Point;
|
var point = mapData.List[i].Point;
|
||||||
Vector3 item = _map.GeoToWorldPosition(new Vector2d(point[0], point[1]));
|
Vector3 item = _map.GeoToWorldPosition(new Vector2d(point[0], point[1]));
|
||||||
item.y += 5f;
|
item.y += 5f;
|
||||||
if (playerController.currentIndex >= i)
|
if (cyclingCotroller.CurrentPlayer.currentIndex >= i)
|
||||||
{
|
{
|
||||||
dat.Add(item);
|
dat.Add(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,6 +55,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
_contactList.Add(obj);
|
_contactList.Add(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
float timer = 1f;
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
var currenList = FindObjectsOfType<ListItem>();//当前列表
|
var currenList = FindObjectsOfType<ListItem>();//当前列表
|
||||||
@ -72,7 +73,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
o.gameObject.SetActive(false);
|
o.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (currenList.Count() <= 10 || list.Count() > 0)
|
if (currenList.Count() == 0 && list.Count() > 0)
|
||||||
{
|
{
|
||||||
InitData();
|
InitData();
|
||||||
if (_recyclableScrollRect.SelfInitialize)
|
if (_recyclableScrollRect.SelfInitialize)
|
||||||
|
|||||||
@ -21,9 +21,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
base.ComputePlayer();
|
base.ComputePlayer();
|
||||||
var current = manager.CurrentPlayer;
|
var current = manager.CurrentPlayer;
|
||||||
if (current != null)
|
if (current != null && current.UserId != UserId)
|
||||||
{
|
{
|
||||||
diff = totalDistance - current.totalDistance;
|
var left = totalDistance % mapData.TotalDistance;
|
||||||
|
var right = current.totalDistance % mapData.TotalDistance;
|
||||||
|
diff = (left - right) * 1000;
|
||||||
|
if (Math.Abs(diff) > 100)
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
var z = current.transform.position.z + diff;
|
var z = current.transform.position.z + diff;
|
||||||
transform.DOMoveZ((float)z, 1f);
|
transform.DOMoveZ((float)z, 1f);
|
||||||
Push();
|
Push();
|
||||||
@ -69,15 +75,27 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
protected override void ComputeAnimator()
|
protected override void ComputeAnimator()
|
||||||
{
|
{
|
||||||
base.ComputeAnimator();
|
base.ComputeAnimator();
|
||||||
var currentFrame = manager.GetFrameOffSet(diff);
|
if (manager.CurrentPlayer == null || manager.CurrentPlayer.UserId != UserId)
|
||||||
var mainFrame = manager.GetCurrentFrame();
|
|
||||||
var min = Math.Min(currentFrame, mainFrame);
|
|
||||||
var max = Math.Max(currentFrame, mainFrame);
|
|
||||||
for (int i = min; i < max; i++)
|
|
||||||
{
|
{
|
||||||
if (manager.mockDirection.ContainsKey(currentFrame))
|
var currentFrame = manager.GetFrameOffSet(diff);
|
||||||
|
var mainFrame = manager.GetCurrentFrame();
|
||||||
|
var min = Math.Min(currentFrame, mainFrame);
|
||||||
|
var max = Math.Max(currentFrame, mainFrame);
|
||||||
|
for (int i = min; i < max; i++)
|
||||||
{
|
{
|
||||||
bearing = manager.mockDirection[currentFrame];
|
if (manager.mockDirection.ContainsKey(currentFrame))
|
||||||
|
{
|
||||||
|
bearing = manager.mockDirection[currentFrame];
|
||||||
|
}
|
||||||
|
animator.SetFloat("bearing", bearing);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var mainFrame = manager.GetCurrentFrame();
|
||||||
|
if (manager.mockDirection.ContainsKey(mainFrame))
|
||||||
|
{
|
||||||
|
bearing = manager.mockDirection[mainFrame];
|
||||||
}
|
}
|
||||||
animator.SetFloat("bearing", bearing);
|
animator.SetFloat("bearing", bearing);
|
||||||
}
|
}
|
||||||
@ -88,25 +106,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
}
|
}
|
||||||
protected override void ComputeVideo()
|
protected override void ComputeVideo()
|
||||||
{
|
{
|
||||||
if (manager.CurrentPlayer == null || manager.CurrentPlayer.UserId != UserId)
|
base.ComputeVideo();
|
||||||
return;
|
|
||||||
mapData = manager.GetMapData();
|
|
||||||
float ratio = 1;
|
|
||||||
if (currentIndex + 1 < mapData.List.Count)
|
|
||||||
{
|
|
||||||
ratio = (float)(manager.CurrentPlayer.speed / mapData.List[currentIndex + 1].Speed);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ratio = (float)(manager.CurrentPlayer.speed / mapData.List[currentIndex].Speed);
|
|
||||||
}
|
|
||||||
manager.Play(ratio);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//设置当前玩家属性
|
//设置当前玩家属性
|
||||||
public void SetPlayer(string name,double totalDistance, double cadance,double heartRate, double wkg, int userId)
|
public void SetPlayer(string name,double totalDistance, double cadance,double heartRate, double wkg, int userId)
|
||||||
{
|
{
|
||||||
this.wkg = wkg;
|
this.wkg = 2.3d;
|
||||||
this.UserName = name;
|
this.UserName = name;
|
||||||
this.speed = 10;
|
this.speed = 10;
|
||||||
this.cadance = cadance;
|
this.cadance = cadance;
|
||||||
|
|||||||
@ -22,6 +22,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
public class VideoGameManager : DeviceServiceMonoBase
|
public class VideoGameManager : DeviceServiceMonoBase
|
||||||
{
|
{
|
||||||
|
[SerializeField]
|
||||||
|
public VideoPlayer videoPlayer;
|
||||||
public AbstractVideoPlayer CurrentPlayer { get; set; }
|
public AbstractVideoPlayer CurrentPlayer { get; set; }
|
||||||
private MapDataModel mapData { get; set; }
|
private MapDataModel mapData { get; set; }
|
||||||
private MediaPlayer mediaPlayer { get; set; }
|
private MediaPlayer mediaPlayer { get; set; }
|
||||||
@ -45,12 +47,12 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
RIDE,
|
RIDE,
|
||||||
INSPECT
|
INSPECT
|
||||||
}
|
}
|
||||||
|
|
||||||
//当前是观察者视角还是骑行者视角
|
//当前是观察者视角还是骑行者视角
|
||||||
public ARMode _aRMode { get; set; }
|
public ARMode _aRMode { get; set; }
|
||||||
|
|
||||||
public int RankingId { get; set; }
|
public int RankingId { get; set; }
|
||||||
private async void Awake()
|
private int currentOnlineCount = 0;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
{
|
{
|
||||||
base.Awake();
|
base.Awake();
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
@ -60,10 +62,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
//自动登录
|
//自动登录
|
||||||
if (App.CurrentUser == null)
|
if (App.CurrentUser == null)
|
||||||
{
|
{
|
||||||
await Login();
|
Login();
|
||||||
}
|
}
|
||||||
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
||||||
//var check = CheckAnt();//初始化蓝牙设备
|
var check = CheckAnt();//初始化蓝牙设备
|
||||||
recordId = Guid.NewGuid().ToString();
|
recordId = Guid.NewGuid().ToString();
|
||||||
MockDirection();
|
MockDirection();
|
||||||
infoPanel = Resources.Load<GameObject>("UI/Prefab/AR/VideoPlayerHead");
|
infoPanel = Resources.Load<GameObject>("UI/Prefab/AR/VideoPlayerHead");
|
||||||
@ -106,7 +108,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
cyclingController?.Run(null);
|
cyclingController?.Run(null);
|
||||||
var onlineRiders = cyclingController.riders;
|
var onlineRiders = cyclingController.riders;
|
||||||
Debug.Log($"当前在线人数:{ MapUDPService.GetAllOnlineUserCount()}");
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CreateOnlineUser(onlineRiders);
|
CreateOnlineUser(onlineRiders);
|
||||||
@ -118,13 +119,27 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
timer += 1f;
|
timer += 1f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private int offSet = 50;
|
|
||||||
private int currentOnlineCount = 0;
|
|
||||||
//创建当前线路其他选手
|
//创建当前线路其他选手
|
||||||
private void CreateOnlineUser(List<BaseRider> list)
|
private void CreateOnlineUser(List<BaseRider> list)
|
||||||
{
|
{
|
||||||
|
//观察者模式随机选择当前骑行的人作为观察对象
|
||||||
|
if (_aRMode == ARMode.INSPECT && CurrentPlayer == null)
|
||||||
|
{
|
||||||
|
var currentPlayer = list.FirstOrDefault();
|
||||||
|
if (currentPlayer != null)
|
||||||
|
{
|
||||||
|
var obj = Instantiate(OnlinePlayer, transform);
|
||||||
|
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||||
|
online.SetPlayer(currentPlayer.NickName, currentPlayer.EndDistance, currentPlayer.Cadence, currentPlayer.HeartRate, currentPlayer.TotalTicks, currentPlayer.UserId);
|
||||||
|
obj.transform.DOMoveX(0, 1);
|
||||||
|
ChangePlayer(currentPlayer.UserId);
|
||||||
|
CurrentPlayer = online;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//list = list.Where(c => c.UserId != CurrentPlayer?.UserId).ToList();
|
||||||
|
|
||||||
var players = FindObjectsOfType<OnlineVideoPlayer>();
|
var players = FindObjectsOfType<OnlineVideoPlayer>();
|
||||||
//var current = FindObjectOfType<VideoPlayer>();
|
|
||||||
//移除
|
//移除
|
||||||
foreach (var item in players)
|
foreach (var item in players)
|
||||||
{
|
{
|
||||||
@ -150,41 +165,31 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//进来观察 看谁呢 依据谁未中心构建其他玩家
|
var diff = item.EndDistance % mapData.TotalDistance - CurrentPlayer.totalDistance % mapData.TotalDistance;
|
||||||
//var diff = item.EndDistance - CurrentPlayer?.totalDistance;
|
if (Math.Abs(diff*1000) < 100)
|
||||||
//if (diff < offSet)
|
|
||||||
{
|
{
|
||||||
var obj = Instantiate(OnlinePlayer, transform);
|
var obj = Instantiate(OnlinePlayer, transform);
|
||||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||||
|
|
||||||
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId);
|
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId);
|
||||||
obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
||||||
currentOnlineCount++;
|
currentOnlineCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//随机选择当前骑行的人作为观察对象
|
|
||||||
//if (_aRMode == ARMode.INSPECT && CurrentPlayer == null)
|
|
||||||
//{
|
|
||||||
// var currentPlayer = players.FirstOrDefault();
|
|
||||||
// if (currentPlayer != null)
|
|
||||||
// {
|
|
||||||
// ChangePlayer(currentPlayer.UserId);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
//设置当前是骑行模式还是观察模式
|
//设置当前是骑行模式还是观察模式
|
||||||
public void SetCurrentMode(ARMode aRMode)
|
public void SetCurrentMode(ARMode aRMode)
|
||||||
{
|
{
|
||||||
_aRMode = aRMode;
|
_aRMode = aRMode;
|
||||||
var videoPlayer = FindObjectOfType<VideoPlayer>();
|
var uimanager = FindObjectOfType<VideoUIManager>();
|
||||||
|
uimanager.SetCurrentMode(aRMode);
|
||||||
if (_aRMode == ARMode.INSPECT)
|
if (_aRMode == ARMode.INSPECT)
|
||||||
{
|
{
|
||||||
videoPlayer?.gameObject.SetActive(false);
|
videoPlayer?.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
videoPlayer?.gameObject.SetActive(true);
|
||||||
CurrentPlayer = videoPlayer;
|
CurrentPlayer = videoPlayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,8 +198,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
//切换人物
|
//切换人物
|
||||||
public void ChangePlayer(int userId)
|
public void ChangePlayer(int userId)
|
||||||
{
|
{
|
||||||
var players = FindObjectsOfType<AbstractVideoPlayer>();
|
var players = FindObjectsOfType<OnlineVideoPlayer>();
|
||||||
if (players != null) {
|
if (players != null)
|
||||||
|
{
|
||||||
CurrentPlayer = players.Where(c => c.UserId == userId).FirstOrDefault();
|
CurrentPlayer = players.Where(c => c.UserId == userId).FirstOrDefault();
|
||||||
if (CurrentPlayer != null) {
|
if (CurrentPlayer != null) {
|
||||||
var currentFrames = DistanceToFrames(CurrentPlayer.totalDistance);
|
var currentFrames = DistanceToFrames(CurrentPlayer.totalDistance);
|
||||||
@ -202,8 +208,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
SetCurrentFrame(currentFrames);
|
SetCurrentFrame(currentFrames);
|
||||||
//设置人物的位置
|
//设置人物的位置
|
||||||
CurrentPlayer.transform.position = origin;
|
CurrentPlayer.transform.position = origin;
|
||||||
//var videoPlayer = FindObjectOfType<VideoPlayer>();
|
|
||||||
//videoPlayer.transform.gameObject.SetActive(false);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -214,7 +219,16 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
var obj = Instantiate(OnlinePlayer, transform);
|
var obj = Instantiate(OnlinePlayer, transform);
|
||||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||||
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance, onlineRider.Cadence, onlineRider.HeartRate, 0, onlineRider.UserId);
|
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance, onlineRider.Cadence, onlineRider.HeartRate, 0, onlineRider.UserId);
|
||||||
//obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
obj.transform.position = origin;
|
||||||
|
CurrentPlayer = online;
|
||||||
|
var currentFrames = DistanceToFrames(CurrentPlayer.totalDistance);
|
||||||
|
//获取当前人物的帧数
|
||||||
|
SetCurrentFrame(currentFrames);
|
||||||
|
}
|
||||||
|
var clearList = players.Where(c => c.UserId != userId);
|
||||||
|
foreach (var item in clearList)
|
||||||
|
{
|
||||||
|
item.Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -296,7 +310,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
//开始游戏
|
//开始游戏
|
||||||
public void StartGame()
|
public void StartGame()
|
||||||
{
|
{
|
||||||
startTime = UIManager.Now.GetDateTime();
|
if (startTime == null)
|
||||||
|
{
|
||||||
|
startTime = UIManager.Now.GetDateTime();
|
||||||
|
}
|
||||||
isStart = true;
|
isStart = true;
|
||||||
}
|
}
|
||||||
//骑行是否开始
|
//骑行是否开始
|
||||||
@ -339,6 +356,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
//暂停
|
//暂停
|
||||||
public void Pause()
|
public void Pause()
|
||||||
{
|
{
|
||||||
|
isStart = false;
|
||||||
mediaPlayer?.Pause();
|
mediaPlayer?.Pause();
|
||||||
}
|
}
|
||||||
//退出骑行
|
//退出骑行
|
||||||
|
|||||||
@ -20,6 +20,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
manager = FindObjectOfType<VideoGameManager>();
|
manager = FindObjectOfType<VideoGameManager>();
|
||||||
|
|
||||||
var button = transform.Find("Panel/Button").GetComponent<Button>();
|
var button = transform.Find("Panel/Button").GetComponent<Button>();
|
||||||
var Start = transform.Find("Panel/Start").GetComponent<Button>();
|
var Start = transform.Find("Panel/Start").GetComponent<Button>();
|
||||||
var Back = transform.Find("Panel/Back").GetComponent<Button>();
|
var Back = transform.Find("Panel/Back").GetComponent<Button>();
|
||||||
@ -81,7 +82,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
manager.SetCurrentMode(VideoGameManager.ARMode.INSPECT);
|
manager.SetCurrentMode(VideoGameManager.ARMode.INSPECT);
|
||||||
var canvasGroup = transform.GetComponent<CanvasGroup>();
|
var canvasGroup = transform.GetComponent<CanvasGroup>();
|
||||||
canvasGroup.DOFade(0, 1);
|
var ui = manager.GetCanvasTransform();
|
||||||
|
canvasGroup.DOFade(0, 1).onComplete += () => {
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
ui.Find("Panel").gameObject.SetActive(true);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
|
|||||||
@ -49,48 +49,21 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
power = manager.UpdatePower();
|
power = manager.UpdatePower();
|
||||||
cadance = manager.UpdateCadence();
|
cadance = manager.UpdateCadence();
|
||||||
#region TEST
|
#region TEST
|
||||||
power = 200;
|
//power = 200;
|
||||||
cadance = 150;
|
cadance = 150;
|
||||||
heartRate = 160;
|
heartRate = 160;
|
||||||
#endregion
|
#endregion
|
||||||
weight = App.CurrentUser.Weight;
|
weight = App.CurrentUser.Weight;
|
||||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||||
|
wkg = Math.Round(power / weight, 2);
|
||||||
//发送阻力
|
//发送阻力
|
||||||
manager.TrackResistance(currentSlope);
|
manager.TrackResistance(currentSlope);
|
||||||
base.ComputePlayer();
|
base.ComputePlayer();
|
||||||
//一旦有功率就开始骑行、否则暂停
|
|
||||||
if (!manager.IsQuit())
|
|
||||||
{
|
|
||||||
if (power > 0)
|
|
||||||
{
|
|
||||||
manager.StartGame();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//控制视频播放速度
|
//控制视频播放速度
|
||||||
protected override void ComputeVideo()
|
protected override void ComputeVideo()
|
||||||
{
|
{
|
||||||
|
base.ComputeVideo();
|
||||||
mapData = manager.GetMapData();
|
|
||||||
float ratio = 1;
|
|
||||||
if (currentIndex + 1 < mapData.List.Count)
|
|
||||||
{
|
|
||||||
ratio = (float)(speed / mapData.List[currentIndex + 1].Speed);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ratio = (float)(speed / mapData.List[currentIndex].Speed);
|
|
||||||
}
|
|
||||||
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
|
|
||||||
return;
|
|
||||||
|
|
||||||
manager.Play(ratio);
|
|
||||||
|
|
||||||
//if (totalDistance >= mapData.TotalDistance)
|
|
||||||
//{
|
|
||||||
// start = false;
|
|
||||||
// manager.Pause();//暂停视频
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ComputeRecord()
|
protected override void ComputeRecord()
|
||||||
|
|||||||
@ -1,16 +1,10 @@
|
|||||||
using Assets.Scenes.Ride.Scripts;
|
using Assets.Scenes.Ride.Scripts;
|
||||||
using Assets.Scenes.Ride.Scripts.Model;
|
|
||||||
using ChartAndGraph;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using DG.Tweening;
|
using DG.Tweening;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
namespace Assets.Scripts.Scenes.VideoRide
|
namespace Assets.Scripts.Scenes.VideoRide
|
||||||
{
|
{
|
||||||
@ -23,7 +17,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
const float MAXPOWER_RATE = 600f;
|
const float MAXPOWER_RATE = 600f;
|
||||||
const float MAXHEARRATE = 200f;
|
const float MAXHEARRATE = 200f;
|
||||||
const float MAXWKG = 6f;
|
const float MAXWKG = 6f;
|
||||||
private ChartDataSourceScript chartDataSourceScript;
|
|
||||||
Text infoText { get; set; }
|
Text infoText { get; set; }
|
||||||
//ComputerPanel
|
//ComputerPanel
|
||||||
Text power { get; set; }
|
Text power { get; set; }
|
||||||
@ -55,19 +48,66 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
GameObject ftpPanel { get; set; }
|
GameObject ftpPanel { get; set; }
|
||||||
Image ftpImage { get; set; }
|
Image ftpImage { get; set; }
|
||||||
Text wkg { get; set; }
|
Text wkg { get; set; }
|
||||||
|
public enum ViewMode
|
||||||
|
{
|
||||||
|
THIRD,
|
||||||
|
FIRST,
|
||||||
|
}
|
||||||
|
//当前是第一人称还是第三人称
|
||||||
|
public ViewMode _viewMode { get; set; }
|
||||||
|
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
UIManager.SetModalPanel(transform.Find("ModalPanel").GetComponent<PFUIPanel>());
|
UIManager.SetModalPanel(transform.Find("ModalPanel").GetComponent<PFUIPanel>());
|
||||||
manager = FindObjectOfType<VideoGameManager>();
|
manager = FindObjectOfType<VideoGameManager>();
|
||||||
videoPlayer = FindObjectOfType<VideoPlayer>();
|
|
||||||
button = transform.Find("Panel/Button").gameObject;
|
button = transform.Find("Panel/Button").gameObject;
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
if (manager != null)
|
||||||
|
{
|
||||||
|
mapName.text = manager.GetMapRoute().Name;
|
||||||
|
//infoText.text = $"帧数:{manager.GetCurrentFrame()}";
|
||||||
|
if (manager.CurrentPlayer != null)
|
||||||
|
{
|
||||||
|
power.text = Math.Round(manager.CurrentPlayer.power).ToString();
|
||||||
|
speed.text = Math.Round(manager.CurrentPlayer.speed).ToString();
|
||||||
|
heartRate.text = Math.Round((manager.CurrentPlayer.heartRate ?? 0d)).ToString();
|
||||||
|
cadance.text = Math.Round(manager.CurrentPlayer.cadance).ToString();
|
||||||
|
playerTimer.text = Helper.FormatTicks(manager.CurrentPlayer.ticks);
|
||||||
|
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance))}KM";
|
||||||
|
left.fillAmount = (float)(Math.Round(manager.CurrentPlayer.power) / MAXPOWER_RATE);
|
||||||
|
right.fillAmount = (float)(Math.Round((manager.CurrentPlayer.heartRate ?? 0f)) / MAXHEARRATE);
|
||||||
|
SetSlopePanel();
|
||||||
|
//ftp
|
||||||
|
ftpImage.fillAmount = (float)(manager.CurrentPlayer.wkg / MAXWKG);
|
||||||
|
wkg.text = $"{manager.CurrentPlayer.wkg}w/kg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetCurrentMode(VideoGameManager.ARMode aRMode)
|
||||||
|
{
|
||||||
|
if (aRMode == VideoGameManager.ARMode.INSPECT)
|
||||||
|
{
|
||||||
|
ComputerPanel.SetActive(false);
|
||||||
|
WatchPanel.SetActive(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WatchPanel.SetActive(false);
|
||||||
|
ComputerPanel.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GameObject ComputerPanel { get; set; }
|
||||||
|
GameObject WatchPanel { get; set; }
|
||||||
private void Init()
|
private void Init()
|
||||||
{
|
{
|
||||||
|
ComputerPanel = transform.Find("Panel/ComputerPanel").gameObject;
|
||||||
|
WatchPanel = transform.Find("Panel/WatchPanel").gameObject;
|
||||||
power = transform.Find("Panel/ComputerPanel/Power").GetComponent<Text>();
|
power = transform.Find("Panel/ComputerPanel/Power").GetComponent<Text>();
|
||||||
cadance = transform.Find("Panel/ComputerPanel/Cadance").GetComponent<Text>();
|
cadance = transform.Find("Panel/ComputerPanel/Cadance").GetComponent<Text>();
|
||||||
heartRate = transform.Find("Panel/ComputerPanel/Hr").GetComponent<Text>();
|
heartRate = transform.Find("Panel/ComputerPanel/Hr").GetComponent<Text>();
|
||||||
@ -99,29 +139,20 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
UIManager.AddEvent(deviceBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, DeviceClick);
|
UIManager.AddEvent(deviceBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, DeviceClick);
|
||||||
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, QuitClick);
|
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, QuitClick);
|
||||||
}
|
}
|
||||||
|
//设置坡度信息
|
||||||
// Update is called once per frame
|
private void SetSlopePanel()
|
||||||
void Update()
|
|
||||||
{
|
{
|
||||||
if (manager != null && manager.CurrentPlayer != null)
|
var normalizedSlope = (float)Math.Round(manager.CurrentPlayer.currentSlope, 1);
|
||||||
{
|
slope.text = normalizedSlope.ToString();
|
||||||
//infoText.text = $"帧数:{manager.GetCurrentFrame()}";
|
var strength = 3;//增强旋转角度系数
|
||||||
power.text = Math.Round(manager.CurrentPlayer.power).ToString();
|
if (normalizedSlope > 10) {
|
||||||
speed.text = Math.Round(manager.CurrentPlayer.speed).ToString();
|
normalizedSlope = 10f;
|
||||||
heartRate.text = Math.Round((manager.CurrentPlayer.heartRate ?? 0d)).ToString();
|
|
||||||
cadance.text = Math.Round(manager.CurrentPlayer.cadance).ToString();
|
|
||||||
playerTimer.text = Helper.FormatTicks(videoPlayer.ticks);
|
|
||||||
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance))}KM";
|
|
||||||
mapName.text = manager.GetMapRoute().Name;
|
|
||||||
left.fillAmount = (float)(Math.Round(manager.CurrentPlayer.power) / MAXPOWER_RATE);
|
|
||||||
right.fillAmount = (float)(Math.Round((manager.CurrentPlayer.heartRate ?? 0f)) / MAXHEARRATE);
|
|
||||||
slope.text = Math.Round(manager.CurrentPlayer.currentSlope,1).ToString();
|
|
||||||
wave.DORotate(new Vector3(0f, 0f, (float)manager.CurrentPlayer.currentSlope), 1f);
|
|
||||||
SetWaveColor(manager.CurrentPlayer.currentSlope);
|
|
||||||
//ftp
|
|
||||||
ftpImage.fillAmount = (float)(manager.CurrentPlayer.wkg / MAXWKG);
|
|
||||||
wkg.text = $"{manager.CurrentPlayer.wkg}w/kg";
|
|
||||||
}
|
}
|
||||||
|
if (normalizedSlope < -10) {
|
||||||
|
normalizedSlope = -10f;
|
||||||
|
}
|
||||||
|
wave.DORotate(new Vector3(0f, 0f, normalizedSlope*strength),1f);
|
||||||
|
SetWaveColor(normalizedSlope);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetWaveColor(double currentSlope)
|
private void SetWaveColor(double currentSlope)
|
||||||
@ -152,13 +183,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
{
|
{
|
||||||
UIManager.Show(UIManager.Instance.DevicePanel, null, true);
|
UIManager.Show(UIManager.Instance.DevicePanel, null, true);
|
||||||
}
|
}
|
||||||
public enum ViewMode
|
|
||||||
{
|
|
||||||
THIRD,
|
|
||||||
FIRST,
|
|
||||||
}
|
|
||||||
//当前是第一人称还是第三人称
|
|
||||||
public ViewMode _viewMode { get; set; }
|
|
||||||
private void ChangeViewClick(BaseEventData e)
|
private void ChangeViewClick(BaseEventData e)
|
||||||
{
|
{
|
||||||
var videoPlayer = FindObjectOfType<VideoPlayer>();
|
var videoPlayer = FindObjectOfType<VideoPlayer>();
|
||||||
@ -185,78 +210,41 @@ namespace Assets.Scripts.Scenes.VideoRide
|
|||||||
}
|
}
|
||||||
private void QuitClick(BaseEventData e)
|
private void QuitClick(BaseEventData e)
|
||||||
{
|
{
|
||||||
UIManager.ShowConfirm("Quit", "Do you want to keep the record?",
|
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
|
||||||
() => {
|
{
|
||||||
videoPlayer?.Upload();
|
|
||||||
|
UIManager.ShowConfirm("Quit", "Do you want to keep the record?",
|
||||||
|
() =>
|
||||||
|
{
|
||||||
|
videoPlayer?.Upload();
|
||||||
|
UIManager.CloseConfirm();
|
||||||
|
//show result
|
||||||
|
resultPanel.SetActive(true);
|
||||||
|
resultPanel.transform.SetAsLastSibling();
|
||||||
|
var videoResultScript = resultPanel.GetComponent<VideoResultScript>();
|
||||||
|
videoResultScript.InjectController(manager);
|
||||||
|
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
||||||
|
},
|
||||||
|
2,
|
||||||
|
() =>
|
||||||
|
{
|
||||||
|
UIManager.CloseConfirm();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UIManager.ShowConfirm("Quit", "Do you want to quit?", () =>
|
||||||
|
{
|
||||||
UIManager.CloseConfirm();
|
UIManager.CloseConfirm();
|
||||||
//show result
|
SceneManager.LoadSceneAsync("MainScene");
|
||||||
resultPanel.SetActive(true);
|
|
||||||
resultPanel.transform.SetAsLastSibling();
|
|
||||||
var videoResultScript = resultPanel.GetComponent<VideoResultScript>();
|
|
||||||
videoResultScript.InjectController(manager);
|
|
||||||
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
|
||||||
},
|
},
|
||||||
2,
|
2,
|
||||||
() => {
|
() =>
|
||||||
|
{
|
||||||
UIManager.CloseConfirm();
|
UIManager.CloseConfirm();
|
||||||
}
|
});
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region
|
|
||||||
|
|
||||||
private void EventHandler()
|
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
GameObject start = transform.Find("Panel/start").gameObject;
|
|
||||||
GameObject stop = transform.Find("Panel/stop").gameObject;
|
|
||||||
GameObject save = transform.Find("Panel/save").gameObject;
|
|
||||||
GameObject left = transform.Find("Panel/left").gameObject;
|
|
||||||
GameObject right = transform.Find("Panel/right").gameObject;
|
|
||||||
GameObject continueBtn = transform.Find("Panel/continue").gameObject;
|
|
||||||
GameObject change = transform.Find("Panel/change").gameObject;
|
|
||||||
|
|
||||||
UIManager.AddEvent(change, UnityEngine.EventSystems.EventTriggerType.PointerClick, async (s) =>
|
|
||||||
{
|
|
||||||
manager.ChangePlayer(-16379);
|
|
||||||
});
|
|
||||||
UIManager.AddEvent(continueBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, async (s) =>
|
|
||||||
{
|
|
||||||
await manager.ContinueAsync();
|
|
||||||
});
|
|
||||||
infoText = transform.Find("InfoText").GetComponent<Text>();
|
|
||||||
UIManager.AddEvent(button, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
UIManager.Show(UIManager.Instance.DevicePanel, null, true);
|
|
||||||
});
|
|
||||||
UIManager.AddEvent(start, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
videoPlayer.SetPower(200);
|
|
||||||
manager.StartGame();
|
|
||||||
});
|
|
||||||
UIManager.AddEvent(stop, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
sb.AppendLine($"{manager.GetCurrentFrame()}:{0}");
|
|
||||||
Debug.Log(sb.ToString());
|
|
||||||
videoPlayer.SetPower(0);
|
|
||||||
manager.Pause();//暂停视频
|
|
||||||
});
|
|
||||||
UIManager.AddEvent(save, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
videoPlayer.Complete();
|
|
||||||
});
|
|
||||||
|
|
||||||
UIManager.AddEvent(left, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
sb.AppendLine($"{manager.GetCurrentFrame()}:{-5}");
|
|
||||||
});
|
|
||||||
UIManager.AddEvent(right, UnityEngine.EventSystems.EventTriggerType.PointerClick, (s) =>
|
|
||||||
{
|
|
||||||
sb.AppendLine($"{manager.GetCurrentFrame()}:{5}");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
24
Assets/Scripts/Scenes/VideoRide/WatchPanelScript.cs
Normal file
24
Assets/Scripts/Scenes/VideoRide/WatchPanelScript.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Scenes.VideoRide
|
||||||
|
{
|
||||||
|
class WatchPanelScript:MonoBehaviour
|
||||||
|
{
|
||||||
|
VideoGameManager manager { get; set; }
|
||||||
|
Text userName { get; set; }
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
manager = FindObjectOfType<VideoGameManager>();
|
||||||
|
userName = transform.Find("name").GetComponent<Text>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (manager != null)
|
||||||
|
{
|
||||||
|
userName.text = manager.CurrentPlayer?.UserName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Scenes/VideoRide/WatchPanelScript.cs.meta
Normal file
11
Assets/Scripts/Scenes/VideoRide/WatchPanelScript.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ee330a42f7b6a6f4391c18a98ef5f3c7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -134,7 +134,6 @@ namespace Assets.Scripts.UI.Control
|
|||||||
var group = tooltips.GetComponent<CanvasGroup>();
|
var group = tooltips.GetComponent<CanvasGroup>();
|
||||||
timer.Elapsed += (r, s) =>
|
timer.Elapsed += (r, s) =>
|
||||||
{
|
{
|
||||||
Debug.Log(131);
|
|
||||||
timer.Stop();
|
timer.Stop();
|
||||||
group.DOFade(1, 1f);
|
group.DOFade(1, 1f);
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user