From f77c60b67cd4061e2dabc5303b999e5deeb98c31 Mon Sep 17 00:00:00 2001 From: kimura Date: Tue, 14 Jun 2022 10:26:09 +0900 Subject: [PATCH] add timer --- .../MyGame/Scenes/MiniGame/MiniGame.unity | 334 +++++++++++++++++- .../Scenes/MiniGame/Scripts/GameManager.cs | 33 ++ .../Scenes/MiniGame/Scripts/HeaderView.cs | 13 + 3 files changed, 377 insertions(+), 3 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity b/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity index 2e01482e..f46089bd 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity @@ -965,6 +965,136 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1001 &470047097 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 987137220} + m_Modifications: + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_SizeDelta.y + value: 92 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 42 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -36 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032002, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_Name + value: Icon_Coin + objectReference: {fileID: 0} + - target: {fileID: 4337906542777032002, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a768b64223c5940c2b597bf37dd8fa92, type: 3} +--- !u!224 &470047098 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4337906542777032001, guid: a768b64223c5940c2b597bf37dd8fa92, + type: 3} + m_PrefabInstance: {fileID: 470047097} + m_PrefabAsset: {fileID: 0} --- !u!1 &515787033 GameObject: m_ObjectHideFlags: 0 @@ -1835,6 +1965,123 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: [] +--- !u!1 &987137219 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 987137220} + - component: {fileID: 987137224} + - component: {fileID: 987137223} + - component: {fileID: 987137222} + - component: {fileID: 987137221} + m_Layer: 5 + m_Name: StockCoin (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &987137220 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987137219} + 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: 470047098} + - {fileID: 1801643597} + m_Father: {fileID: 2098933369} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -26, y: -39} + m_SizeDelta: {x: 0, y: 74} + m_Pivot: {x: 1, y: 1} +--- !u!114 &987137221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987137219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 42 + m_Right: 30 + m_Top: -10 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 54 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!114 &987137222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987137219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &987137223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987137219} + 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: 0 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ff4d597826f53ac49821fc3d60148965, type: 3} + 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!222 &987137224 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987137219} + m_CullTransparentMesh: 0 --- !u!1 &1021083738 GameObject: m_ObjectHideFlags: 0 @@ -3143,6 +3390,84 @@ Transform: m_Father: {fileID: 1175036174} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1801643596 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1801643597} + - component: {fileID: 1801643599} + - component: {fileID: 1801643598} + m_Layer: 5 + m_Name: Text_StockCoin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1801643597 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1801643596} + 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: 987137220} + 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, y: 0} + m_SizeDelta: {x: 0, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1801643598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1801643596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 351b4ffae35e149bf81549887561d561, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.3372549, g: 0.21960784, b: 0.14117648, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: b5532e9ce15694f55a0893a76a98cd78, type: 3} + m_FontSize: 45 + m_FontStyle: 1 + m_BestFit: 1 + m_MinSize: 45 + m_MaxSize: 45 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 12345 +--- !u!222 &1801643599 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1801643596} + m_CullTransparentMesh: 0 --- !u!1 &1804772772 GameObject: m_ObjectHideFlags: 0 @@ -3514,9 +3839,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 96c2b99ef2e6c42dd998b782def0bd0e, type: 3} m_Name: m_EditorClassIdentifier: - speed: 2 - jumpTime: 0.8 - jumpHeight: 2 + speed: 3 + jumpTime: 1.2 + jumpHeight: 4 + timeLimit: 30 headerView: {fileID: 2098933370} characterTransform: {fileID: 519190655} --- !u!4 &1870432534 @@ -4303,6 +4629,7 @@ RectTransform: - {fileID: 1133979116} - {fileID: 1021083739} - {fileID: 3821169997422944309} + - {fileID: 987137220} m_Father: {fileID: 676036207} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -4324,6 +4651,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: text: {fileID: 75320963} + timeText: {fileID: 1801643598} --- !u!1 &97244992320939076 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs index 2e6be0ee..0d137a2d 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs @@ -19,9 +19,13 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private float speed = 1f; [SerializeField] private float jumpTime = .8f; [SerializeField] private float jumpHeight = 2f; + [SerializeField] private float timeLimit = 30f; [SerializeField] private HeaderView headerView; [SerializeField] private Transform characterTransform; + private readonly ReactiveProperty state = new ReactiveProperty(); + private IDisposable timerDisposable; + // Start is called before the first frame update private void Start() { @@ -51,6 +55,35 @@ namespace MyGame.Scenes.MiniGame.Scripts Jump(); } }).AddTo(this); + + state.Subscribe(x => + { + switch (x) + { + case State.Ready: + headerView.ResetView(); + headerView.ChangeTimeCount(timeLimit); + break; + case State.Play: + timerDisposable?.Dispose(); + timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f)) + .Select(time => (int)(timeLimit - time)) + .TakeWhile(time => time > 0) + .Subscribe(time => + { + headerView.ChangeTimeCount(time); + }, () => + { + }).AddTo(this); + break; + case State.Success: + break; + case State.Failure: + break; + default: + throw new ArgumentOutOfRangeException(nameof(x), x, null); + } + }).AddTo(this); characterTransform.OnTriggerEnter2DAsObservable().Subscribe(x => { diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/HeaderView.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/HeaderView.cs index c1b58a16..e3d065e6 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/HeaderView.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/HeaderView.cs @@ -8,25 +8,38 @@ namespace MyGame.Scenes.MiniGame.Scripts public class HeaderView : MonoBehaviour { [SerializeField] private Text text; + [SerializeField] private Text timeText; private readonly ReactiveProperty itemCount = new ReactiveProperty(); + private readonly ReactiveProperty timeCount = new ReactiveProperty(); private void Start() { itemCount.AddTo(this); + timeCount.AddTo(this); itemCount.Subscribe(x => { text.text = $"{x}"; }).AddTo(this); + timeCount.Subscribe(x => + { + timeText.text = $"のこり{x:0}秒"; + }).AddTo(this); } public void ResetView() { itemCount.Value = 0; + timeCount.Value = 0; } public void AddCount() { itemCount.Value++; } + + public void ChangeTimeCount(float newTime) + { + timeCount.Value = newTime; + } } } \ No newline at end of file