Nouveau calcul de la vitesse

This commit is contained in:
Florent Guiotte 2018-03-11 17:04:18 +01:00
parent 03d8b7ac87
commit 54719964f9
2 changed files with 195 additions and 16 deletions

View File

@ -282,8 +282,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: -0.11, y: 0.31}
m_SizeDelta: {x: 1920, y: 1080} m_SizeDelta: {x: 1375.9, y: 290}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &384609362 --- !u!114 &384609362
MonoBehaviour: MonoBehaviour:
@ -354,7 +354,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Material: {fileID: 0} 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_RaycastTarget: 1
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
@ -374,7 +374,9 @@ MonoBehaviour:
m_HorizontalOverflow: 0 m_HorizontalOverflow: 0
m_VerticalOverflow: 0 m_VerticalOverflow: 0
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: LUDICROUS m_Text: 'LUDICROUS
'
--- !u!222 &384609366 --- !u!222 &384609366
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -491,7 +493,7 @@ Transform:
m_Children: m_Children:
- {fileID: 1865218697} - {fileID: 1865218697}
m_Father: {fileID: 1036252279} m_Father: {fileID: 1036252279}
m_RootOrder: 1 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &896084743 --- !u!114 &896084743
MonoBehaviour: MonoBehaviour:
@ -580,6 +582,7 @@ Transform:
m_LocalScale: {x: 17.777779, y: 10, z: 1} m_LocalScale: {x: 17.777779, y: 10, z: 1}
m_Children: m_Children:
- {fileID: 384609361} - {fileID: 384609361}
- {fileID: 1810492795}
- {fileID: 896084742} - {fileID: 896084742}
m_Father: {fileID: 670213598} m_Father: {fileID: 670213598}
m_RootOrder: 0 m_RootOrder: 0
@ -609,11 +612,13 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
playerID: 0 playerID: 0
distanceToRun: 400 distanceToRun: 300
wheelDiameter: 0.559 wheelDiameter: 0.7
ticPerTurn: 2 ticPerTurn: 1
speedIntegrationTime: 1 speedIntegrationTime: 1
maxTimeDlt: 1
tachometer: {fileID: 384609365} tachometer: {fileID: 384609365}
maxspeed: {fileID: 1810492796}
--- !u!1 &1180963258 --- !u!1 &1180963258
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -829,7 +834,9 @@ MonoBehaviour:
wheelDiameter: 0.559 wheelDiameter: 0.559
ticPerTurn: 2 ticPerTurn: 2
speedIntegrationTime: 1 speedIntegrationTime: 1
maxTimeDlt: 1
tachometer: {fileID: 6796232} tachometer: {fileID: 6796232}
maxspeed: {fileID: 0}
--- !u!114 &1718131635 --- !u!114 &1718131635
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -915,6 +922,140 @@ Transform:
m_Father: {fileID: 1616930803} m_Father: {fileID: 1616930803}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!1 &1865218696
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -23,13 +23,19 @@ public class BikeManager : MonoBehaviour {
private float normalSpeed; private float normalSpeed;
private float Speed {get; set; } private float Speed {get; set; }
private float MaxSpeed {get; set; }
private Queue<float> impulses = new Queue<float>(); private Queue<float> impulses = new Queue<float>();
private float lastTimeImp;
private float lastTimeDlt;
public float maxTimeDlt = 1.0f;
private float filteredSpeed;
private VideoManager vm; private VideoManager vm;
// TODO: Refactor deps! // TODO: Refactor deps!
public Text tachometer; public Text tachometer;
public Text maxspeed;
// Use this for initialization // Use this for initialization
void Start () { void Start () {
@ -54,17 +60,25 @@ public class BikeManager : MonoBehaviour {
// Update is called once per frame // Update is called once per frame
void Update () { void Update () {
if (Input.GetButtonDown(inputID)) { //Speed = getBikeSpeedLegacy(speedIntegrationTime);
WheelTic(); Speed = getBikeSpeedApproxFiltered();
}
Speed = getBikeSpeed(speedIntegrationTime);
Debug.Log(Speed);
vm.speed = Speed / normalSpeed; 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) { int getBikeImpulses(float timeWindow = .5f) {
if (impulses.Count == 0) { if (impulses.Count == 0) {
return 0; return 0;
@ -82,7 +96,26 @@ public class BikeManager : MonoBehaviour {
return impulses.Count; 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); int imp = getBikeImpulses(timeWindow);
return imp * distancePerTick / timeWindow; return imp * distancePerTick / timeWindow;
} }
@ -91,6 +124,11 @@ public class BikeManager : MonoBehaviour {
impulses.Enqueue(Time.time); impulses.Enqueue(Time.time);
distanceRun += distancePerTick; distanceRun += distancePerTick;
//Debug.Log(GetProgress()); //Debug.Log(GetProgress());
lastTimeDlt = Time.time - lastTimeImp;
lastTimeImp = Time.time;
Debug.Log(lastTimeDlt);
} }
public float GetProgress() { public float GetProgress() {