diff --git a/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.anim b/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.anim index a1171b8a..531a553c 100644 --- a/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.anim +++ b/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.anim @@ -104,7 +104,7 @@ AnimationClip: m_Level: 0 m_CycleOffset: 0 m_HasAdditiveReferencePose: 0 - m_LoopTime: 1 + m_LoopTime: 0 m_LoopBlend: 0 m_LoopBlendOrientation: 0 m_LoopBlendPositionY: 0 diff --git a/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.controller b/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.controller index 9b376fe0..d16eab3b 100644 --- a/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.controller +++ b/popcorn/Assets/MyGame/Resource/Animation/StockCorn_addition.controller @@ -1,5 +1,30 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-8642731778310273473 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Appear + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7636538999637159995} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0.24 + m_ExitTime: 1 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1102 &-7636538999637159995 AnimatorState: serializedVersion: 5 @@ -10,6 +35,58 @@ AnimatorState: m_Name: StockCorn_addition_appear m_Speed: 1 m_CycleOffset: 0 + m_Transitions: + - {fileID: 3383956810922778620} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: a4e9d84ee63cf8441912c536b0a82c86, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-6879587025651168406 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Add + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -788033614754781971} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.15 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-3946120656019495017 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StockCorn_addition_disappear + m_Speed: -1 + m_CycleOffset: 0 m_Transitions: [] m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} @@ -36,7 +113,9 @@ AnimatorState: m_Name: StockCorn_addition m_Speed: 1 m_CycleOffset: 0 - m_Transitions: [] + m_Transitions: + - {fileID: -6879587025651168406} + - {fileID: 719906150159968281} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -60,7 +139,31 @@ AnimatorController: m_PrefabAsset: {fileID: 0} m_Name: StockCorn_addition serializedVersion: 5 - m_AnimatorParameters: [] + m_AnimatorParameters: + - m_Name: Add + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Appear + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Disappear + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Wait + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -74,6 +177,78 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} +--- !u!1101 &705613616560957241 +AnimatorStateTransition: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &719906150159968281 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Wait + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2789945997106464607} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &797903091149478652 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Add + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -788033614754781971} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1107 &2098577713097479084 AnimatorStateMachine: serializedVersion: 5 @@ -85,12 +260,20 @@ AnimatorStateMachine: m_ChildStates: - serializedVersion: 1 m_State: {fileID: -788033614754781971} - m_Position: {x: 200, y: 0, z: 0} + m_Position: {x: 340, y: -40, z: 0} - serializedVersion: 1 m_State: {fileID: -7636538999637159995} - m_Position: {x: 230, y: 60, z: 0} + m_Position: {x: 540, y: 20, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2789945997106464607} + m_Position: {x: 340, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: -3946120656019495017} + m_Position: {x: 260, y: -150, z: 0} m_ChildStateMachines: [] - m_AnyStateTransitions: [] + m_AnyStateTransitions: + - {fileID: -8642731778310273473} + - {fileID: 8499302709827305042} m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] @@ -98,4 +281,78 @@ AnimatorStateMachine: m_EntryPosition: {x: 50, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: -788033614754781971} + m_DefaultState: {fileID: 2789945997106464607} +--- !u!1102 &2789945997106464607 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Wait + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 797903091149478652} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &3383956810922778620 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -788033614754781971} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0.13288593 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &8499302709827305042 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Disappear + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -3946120656019495017} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0.13 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 diff --git a/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity b/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity index 7d55a05b..c515171c 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity +++ b/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity @@ -551,7 +551,6 @@ MonoBehaviour: harvestedSpawnTransform: {fileID: 1355152264} harvestedPrefab: {fileID: 2111766585493962378, guid: d52f3514ed7fd461b8ab77a202c122c6, type: 3} - harvestedSpawnTarget: {fileID: 0} thrust: 40 machineTarget: {fileID: 1491597820} cullCornRate: 0.9 @@ -756,10 +755,10 @@ RectTransform: m_Father: {fileID: 457045028} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 122.21785, y: -54} - m_SizeDelta: {x: 101.03571, y: 100} + 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 &323920547 MonoBehaviour: @@ -802,6 +801,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 323920545} m_CullTransparentMesh: 0 +--- !u!1 &347092270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 347092271} + - component: {fileID: 347092273} + - component: {fileID: 347092272} + m_Layer: 5 + m_Name: StockCorn_addition + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &347092271 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347092270} + 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: 1106859980} + m_Father: {fileID: 387414334} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 66, y: -241} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &347092272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347092270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36e90b93a284494f950c1e35f9b68535, type: 3} + m_Name: + m_EditorClassIdentifier: + counterAnimator: {fileID: 1106859981} + counter: {fileID: 323920547} + triggerThrottle: 0.2 + countDuration: 0.5 + waitDisappeared: 3 +--- !u!223 &347092273 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347092270} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 39 + m_TargetDisplay: 0 --- !u!1 &355725951 GameObject: m_ObjectHideFlags: 0 @@ -1522,7 +1597,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: -32.99994, y: 15.999985} - m_SizeDelta: {x: 230.7357, y: 88} + m_SizeDelta: {x: 0, y: 88} m_Pivot: {x: 0, y: 1} --- !u!114 &457045029 MonoBehaviour: @@ -1906,7 +1981,7 @@ Camera: m_Depth: -1 m_CullingMask: serializedVersion: 2 - m_Bits: 23 + m_Bits: 4294967295 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 @@ -2306,6 +2381,7 @@ MonoBehaviour: m_EditorClassIdentifier: animationDuration: 0.5 fertilizerFinishWaitTime: 2.21 + cornSortingOrder: 40 uiVisibleController: {fileID: 1859409048} sideButtons: {fileID: 1735316554} promoteGrowthButton: {fileID: 730756546} @@ -2320,7 +2396,8 @@ MonoBehaviour: fertilizerButtonView: {fileID: 525465089} brotherFertilizerAnimation: {fileID: 715847677} counterView: {fileID: 1507187603938887411} - animationTarget: {fileID: 1373978114} + additionView: {fileID: 347092272} + animationTarget: {fileID: 1881129199} plantLines: - {fileID: 1656378502} - {fileID: 1192216301} @@ -2673,9 +2750,9 @@ RectTransform: m_Father: {fileID: 457045028} 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: 39, y: -25} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 42} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &971086866 stripped @@ -3104,7 +3181,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1106859980 RectTransform: m_ObjectHideFlags: 0 @@ -3117,14 +3194,14 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 457045028} - m_Father: {fileID: 387414334} - m_RootOrder: 7 + m_Father: {fileID: 347092271} + 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: 66, y: -241} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0, y: 0} m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 1} + m_Pivot: {x: 0.5, y: 0.5} --- !u!95 &1106859981 Animator: serializedVersion: 3 @@ -3747,12 +3824,6 @@ Transform: m_Father: {fileID: 282523123} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!224 &1373978114 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 1507187602806663289, guid: 21599f8e6d1104a07b0b14b49f8c1429, - type: 3} - m_PrefabInstance: {fileID: 1507187603938887410} - m_PrefabAsset: {fileID: 0} --- !u!1 &1406886287 GameObject: m_ObjectHideFlags: 0 @@ -14738,7 +14809,7 @@ PrefabInstance: - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} propertyPath: m_RootOrder - value: 9 + value: 10 objectReference: {fileID: 0} - target: {fileID: 4293843006989820480, guid: 1c993e9707f1a4fada56020be27dde28, type: 3} diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 67d31657..76aa4df8 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -20,6 +20,7 @@ public class CornField : MonoBehaviour { [SerializeField] private float animationDuration = .3f; [SerializeField] private float fertilizerFinishWaitTime = 1f; + [SerializeField] private int cornSortingOrder = 40; [Space] [SerializeField] private UIVisibleController uiVisibleController; [SerializeField] private GameObject sideButtons; @@ -33,6 +34,7 @@ public class CornField : MonoBehaviour [SerializeField] private FertilizerButtonView fertilizerButtonView; [SerializeField] private BrotherFertilizerAnimation brotherFertilizerAnimation; [SerializeField] private HarvestedCounterView counterView; + [SerializeField] private HarvestedAdditionView additionView; [SerializeField] private Transform animationTarget; [Space] [SerializeField] private List plantLines = new List(); @@ -88,6 +90,7 @@ public class CornField : MonoBehaviour TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel); }).AddTo(this); counterView.Initialize(gameData.CornSeed); + additionView.Initialize(0); SetData(); // 畑リセット @@ -115,6 +118,7 @@ public class CornField : MonoBehaviour GameDataManager.SaveGameData(); isFertilizing = true; + additionView.IsStopDisapper = true; SoundManager.Instance.PlayBGM("bgm_fertilizer"); brotherFertilizerAnimation.StartAnimation(); // button非表示 @@ -164,6 +168,8 @@ public class CornField : MonoBehaviour this.CallWaitForSeconds(fertilizerFinishWaitTime, () => { isFertilizing = false; + additionView.IsStopDisapper = false; + additionView.PlayEffect(); // ボタン表示復活 promoteGrowthButton.gameObject.SetActive(true); sideButtons.SetActive(true); @@ -197,7 +203,7 @@ public class CornField : MonoBehaviour // 収穫カウンター+吸収演出 cornHarvester.FinishHarvested - .Scan((list, newList) => (newList.count, list.colliders.Concat(newList.colliders).ToList())) + .Scan((list, newList) => (list.count += newList.count, list.colliders.Concat(newList.colliders).ToList())) .Throttle(TimeSpan.FromSeconds(countThrottle)) .Take(1) .RepeatUntilDestroy(this) @@ -221,7 +227,10 @@ public class CornField : MonoBehaviour this.CallWaitForSeconds(animationStartDelay * Mathf.FloorToInt((float)j++ / animationDivisor), () => { harvested.enabled = false; - harvested.GetComponentInChildren().sortingOrder = 40; + var spriteRenderer = harvested.GetComponentInChildren(); + spriteRenderer.sortingOrder = cornSortingOrder; + // Layer 5:UI 決め打ち + spriteRenderer.gameObject.layer = 5; var beginPos = harvested.transform.position; this.CallLerp(animationDuration, f => { @@ -229,15 +238,22 @@ public class CornField : MonoBehaviour }, () => { Destroy(harvested.gameObject); - counterView.PlayEffect(); + additionView.PlayEffect(); }); }); }); this.CallWaitForSeconds(animationDuration, () => { - counterView.SetHarvestedCount(x.count); + additionView.AddHarvestedCount(x.count); }); }).AddTo(this); + var counterTotalCorn = gameData.CornSeed; + additionView.EndObservable.Subscribe(addCount => + { + counterTotalCorn += addCount; + counterView.PlayEffect(); + counterView.SetHarvestedCount(counterTotalCorn); + }).AddTo(this); } public void SetCornField(bool useFertilizer = false) diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornHarvester.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornHarvester.cs index 6b056feb..783fdb63 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornHarvester.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornHarvester.cs @@ -13,10 +13,10 @@ public class CornHarvester : MonoBehaviour private static readonly int PutOut = Animator.StringToHash("PutOut"); [SerializeField] private Transform harvestedSpawnTransform; [SerializeField] private GameObject harvestedPrefab; - [SerializeField] private GameObject harvestedSpawnTarget; [SerializeField] private float thrust = 100f; [SerializeField] private Transform machineTarget; // 収穫演出で出るコーンの数を制限 + [Space] [SerializeField] private float cullCornRate = .8f; [SerializeField] private int firstCornLimit = 200; [SerializeField] private int secondCornLimit = 300; @@ -45,7 +45,7 @@ public class CornHarvester : MonoBehaviour { machineAnimator?.SetTrigger(Wait); } - finishHarvested.OnNext((x.Current, list)); + finishHarvested.OnNext((x.Current - x.Previous, list)); })); }).AddTo(this); } @@ -74,6 +74,9 @@ public class CornHarvester : MonoBehaviour yield return null; } callback?.Invoke(finishedList); +#if UNITY_EDITOR + Debug.Log($"now:{harvestedSpawnTransform.childCount}"); +#endif } public void AddCount(int value) diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs new file mode 100644 index 00000000..6220e2d6 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs @@ -0,0 +1,105 @@ +using System; +using System.Text; +using UniRx; +using UnityEngine; +using UnityEngine.UI; + + +public class HarvestedAdditionView : MonoBehaviour +{ + private static readonly int Add = Animator.StringToHash("Add"); + private static readonly int Appear = Animator.StringToHash("Appear"); + private static readonly int Disappear = Animator.StringToHash("Disappear"); + private static readonly int Wait = Animator.StringToHash("Wait"); + + [SerializeField] private Animator counterAnimator; + [SerializeField] private TextWithCountUpInt counter; + [Tooltip("揺れる頻度")] + [SerializeField] private float triggerThrottle = .1f; + [Tooltip("カウントアップ時間")] + [SerializeField] private float countDuration = .4f; + [Tooltip("コーンが来なくなってから待つ時間")] + [SerializeField] private float waitDisappeared = 2f; + [NonSerialized] public bool IsStopDisapper; + private static readonly string harvestedCountFormat = "+{0}"; + private static readonly string hasCountFormat = "{0}"; + private readonly Subject playEffectObserve = new Subject(); + private bool flag; + private int latestCount; + + public IObservable EndObservable => endObservable; + private readonly Subject endObservable = new Subject(); + private Coroutine disapperCoroutine; + + private void Start() + { + playEffectObserve.AddTo(this); + playEffectObserve + .ThrottleFirst(TimeSpan.FromSeconds(triggerThrottle)) + .Subscribe(_ => + { + transform.SetLocalScale(1); + this.SafeStopCoroutine(disapperCoroutine); + if (flag) + { + counterAnimator.SetTrigger(Appear); + } + else + { + counterAnimator.SetTrigger(Add); + } + flag = false; + }).AddTo(this); + // playEffectObserveが来なくなって0.15sで揺らすのを止める + playEffectObserve + .Throttle(TimeSpan.FromSeconds(.15f)) + .Subscribe(_ => + { + counterAnimator.ResetTrigger(Add); + counterAnimator.SetTrigger(Wait); + }).AddTo(this); + playEffectObserve + .Throttle(TimeSpan.FromSeconds(waitDisappeared)) + .Where(_ => !IsStopDisapper) + .Subscribe(_ => + { + endObservable.OnNext(latestCount); + SetHarvestedCount(0); + disapperCoroutine = this.CallWaitForSeconds(countDuration, () => + { + Reset(); + counterAnimator.SetTrigger(Disappear); + }); + }).AddTo(this); + } + + public void Initialize(int count) + { + transform.SetLocalScale(0); + Reset(); + } + + private void Reset() + { + counter.ChangeValue(hasCountFormat, 0); + latestCount = 0; + flag = true; + } + + private void SetHarvestedCount(int count) + { + latestCount = count; + counter.CountUpAnimation($"{harvestedCountFormat}", latestCount, countDuration); + } + + public void AddHarvestedCount(int count) + { + latestCount += count; + counter.CountUpAnimation($"{harvestedCountFormat}", latestCount, countDuration); + } + + public void PlayEffect() + { + playEffectObserve.OnNext(default); + } +} \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs.meta b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs.meta new file mode 100644 index 00000000..b8e3e603 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedAdditionView.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 36e90b93a284494f950c1e35f9b68535 +timeCreated: 1634295489 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedCounterView.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedCounterView.cs index afd4cdc6..08a4bfd3 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedCounterView.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/HarvestedCounterView.cs @@ -10,9 +10,7 @@ public class HarvestedCounterView : MonoBehaviour private static readonly int Add = Animator.StringToHash("Add"); [SerializeField] private Animator counterAnimator; [SerializeField] private TextWithCountUpInt counter; - private static readonly string harvestedCountFormat = "+{0}"; private static readonly string hasCountFormat = "{0}"; - private string hasCountText; private static readonly float duration = .5f; private readonly Subject playEffectObserve = new Subject(); @@ -29,13 +27,12 @@ public class HarvestedCounterView : MonoBehaviour public void Initialize(int count) { - hasCountText = string.Format(hasCountFormat, count.ToString()); - counter.ChangeValue(hasCountText, 0); + counter.ChangeValue(hasCountFormat, count); } public void SetHarvestedCount(int count) { - counter.CountUpAnimation($"{hasCountText}{harvestedCountFormat}", count, duration); + counter.CountUpAnimation(hasCountFormat, count, duration); } public void PlayEffect()