diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index ca1b41e..416279a 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -282,8 +282,8 @@ RectTransform: 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: 0} - m_SizeDelta: {x: 1920, y: 1080} + m_AnchoredPosition: {x: -0.11, y: 0.31} + m_SizeDelta: {x: 1375.9, y: 290} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &384609362 MonoBehaviour: @@ -354,7 +354,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0, g: 1, b: 0, a: 1} m_RaycastTarget: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -374,7 +374,9 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: LUDICROUS + m_Text: 'LUDICROUS + +' --- !u!222 &384609366 CanvasRenderer: m_ObjectHideFlags: 0 @@ -491,7 +493,7 @@ Transform: m_Children: - {fileID: 1865218697} m_Father: {fileID: 1036252279} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &896084743 MonoBehaviour: @@ -580,6 +582,7 @@ Transform: m_LocalScale: {x: 17.777779, y: 10, z: 1} m_Children: - {fileID: 384609361} + - {fileID: 1810492795} - {fileID: 896084742} m_Father: {fileID: 670213598} m_RootOrder: 0 @@ -609,11 +612,13 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: playerID: 0 - distanceToRun: 400 - wheelDiameter: 0.559 - ticPerTurn: 2 + distanceToRun: 300 + wheelDiameter: 0.7 + ticPerTurn: 1 speedIntegrationTime: 1 + maxTimeDlt: 1 tachometer: {fileID: 384609365} + maxspeed: {fileID: 1810492796} --- !u!1 &1180963258 GameObject: m_ObjectHideFlags: 0 @@ -829,7 +834,9 @@ MonoBehaviour: wheelDiameter: 0.559 ticPerTurn: 2 speedIntegrationTime: 1 + maxTimeDlt: 1 tachometer: {fileID: 6796232} + maxspeed: {fileID: 0} --- !u!114 &1718131635 MonoBehaviour: m_ObjectHideFlags: 0 @@ -915,6 +922,140 @@ Transform: m_Father: {fileID: 1616930803} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1810492794 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1810492795} + - component: {fileID: 1810492800} + - component: {fileID: 1810492799} + - component: {fileID: 1810492798} + - component: {fileID: 1810492797} + - component: {fileID: 1810492796} + m_Layer: 0 + m_Name: HUD Max + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1810492795 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -2.8599997} + m_LocalScale: {x: 0.000520875, y: 0.000926, z: 1} + m_Children: [] + m_Father: {fileID: 1036252279} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -0.10995972, y: 0.14} + m_SizeDelta: {x: 1375.9, y: 290} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1810492796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 1, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 100 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 300 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Max +--- !u!222 &1810492797 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} +--- !u!114 &1810492798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1810492799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1810492800 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1810492794} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1865218696 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GameScene/BikeManager.cs b/Assets/Scripts/GameScene/BikeManager.cs index 01b510d..afe0103 100644 --- a/Assets/Scripts/GameScene/BikeManager.cs +++ b/Assets/Scripts/GameScene/BikeManager.cs @@ -23,13 +23,19 @@ public class BikeManager : MonoBehaviour { private float normalSpeed; private float Speed {get; set; } + private float MaxSpeed {get; set; } private Queue impulses = new Queue(); + private float lastTimeImp; + private float lastTimeDlt; + public float maxTimeDlt = 1.0f; + private float filteredSpeed; private VideoManager vm; // TODO: Refactor deps! public Text tachometer; + public Text maxspeed; // Use this for initialization void Start () { @@ -54,17 +60,25 @@ public class BikeManager : MonoBehaviour { // Update is called once per frame void Update () { - if (Input.GetButtonDown(inputID)) { - WheelTic(); - } - - Speed = getBikeSpeed(speedIntegrationTime); - Debug.Log(Speed); + //Speed = getBikeSpeedLegacy(speedIntegrationTime); + Speed = getBikeSpeedApproxFiltered(); vm.speed = Speed / normalSpeed; - tachometer.text = (Speed * 3.6f).ToString() + "km/h"; + + if (Speed > MaxSpeed) { + MaxSpeed = Speed; + } + + tachometer.text = (Speed * 3.6f).ToString("#0.0") + "km/h"; + maxspeed.text = "Max : " + (MaxSpeed * 3.6f).ToString("#0.0"); + + if (Input.GetButtonDown(inputID)) + WheelTic(); } + void FixedUpdate() { + } + int getBikeImpulses(float timeWindow = .5f) { if (impulses.Count == 0) { return 0; @@ -82,7 +96,26 @@ public class BikeManager : MonoBehaviour { return impulses.Count; } - float getBikeSpeed(float timeWindow = .5f) { + float getBikeSpeedApproxFiltered(float max = 90 / 3.6f) { + float speed = getBikeSpeedApprox(); + if (speed < max) + filteredSpeed = speed; + return filteredSpeed; + } + + float getBikeSpeedApprox() { + float newTimeDlt = Time.time - lastTimeImp; + + if (lastTimeDlt < 0.01) + return 0f; + if (newTimeDlt < lastTimeDlt) + return distancePerTick / lastTimeDlt; + if (newTimeDlt < maxTimeDlt) + return distancePerTick / newTimeDlt; + return 0f; + } + + float getBikeSpeedLegacy(float timeWindow = .5f) { int imp = getBikeImpulses(timeWindow); return imp * distancePerTick / timeWindow; } @@ -91,6 +124,11 @@ public class BikeManager : MonoBehaviour { impulses.Enqueue(Time.time); distanceRun += distancePerTick; //Debug.Log(GetProgress()); + + lastTimeDlt = Time.time - lastTimeImp; + lastTimeImp = Time.time; + + Debug.Log(lastTimeDlt); } public float GetProgress() {