diff --git a/Assets/Resources/Games/cropStomp.prefab b/Assets/Resources/Games/cropStomp.prefab index cc7c8cc1f..5d818fda9 100644 --- a/Assets/Resources/Games/cropStomp.prefab +++ b/Assets/Resources/Games/cropStomp.prefab @@ -55,7 +55,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 932095736067145199} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.752, z: 0} + m_LocalPosition: {x: 0, y: -0.84, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 7169260676522138663} @@ -167,6 +167,53 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &2339041431090773305 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5887073583228178020} + - component: {fileID: 1230221333052491558} + m_Layer: 0 + m_Name: Point 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5887073583228178020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2339041431090773305} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.58, y: 1.37, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6378453749366738950} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1230221333052491558 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2339041431090773305} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} + m_Name: + m_EditorClassIdentifier: + curve: {fileID: 1367185960650937854} + handleType: 0 + leftHandleLocalPosition: {x: 0, y: -0, z: 0} + rightHandleLocalPosition: {x: -0, y: 0, z: -0} --- !u!1 &2592768001999288343 GameObject: m_ObjectHideFlags: 0 @@ -196,7 +243,7 @@ Transform: m_LocalScale: {x: 4.5, y: 4.5, z: 1} m_Children: - {fileID: 4394677245651984230} - - {fileID: 5722828240178235474} + - {fileID: 1306622253208457060} m_Father: {fileID: 7947161716638790645} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -234,7 +281,7 @@ MonoBehaviour: - {fileID: -4112523241890619114, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} - {fileID: 3862573926363885855, guid: 2deb728f30830dd438f91e9a4dff8cd4, type: 3} veggieSprite: {fileID: 8249654647796258422} - veggieTrans: {fileID: 5722828240178235474} + veggieTrans: {fileID: 1306622253208457060} curve: {fileID: 2637729749686440137} targetBeat: 0 --- !u!1 &2911726556380549294 @@ -339,12 +386,12 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3948884045839928685} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.752, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.08799988, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 7001187974207596949} - m_RootOrder: 1 + m_Father: {fileID: 1306622253208457060} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8249654647796258422 SpriteRenderer: @@ -543,6 +590,53 @@ Transform: m_Father: {fileID: 3229117913716202416} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5221309158809627500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8229892935033794648} + - component: {fileID: 2500821779944748825} + m_Layer: 0 + m_Name: Point 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8229892935033794648 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5221309158809627500} + 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: 6378453749366738950} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2500821779944748825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5221309158809627500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} + m_Name: + m_EditorClassIdentifier: + curve: {fileID: 1367185960650937854} + handleType: 0 + leftHandleLocalPosition: {x: 0, y: 0, z: 0} + rightHandleLocalPosition: {x: -0, y: -0, z: -0} --- !u!1 &5386007714129059416 GameObject: m_ObjectHideFlags: 0 @@ -764,6 +858,7 @@ MonoBehaviour: scrollingHolder: {fileID: 3229117913716202416} veggieHolder: {fileID: 6205523899711794644} farmer: {fileID: 2943047049103139379} + pickCurve: {fileID: 1367185960650937854} --- !u!1 &5813499711658895222 GameObject: m_ObjectHideFlags: 0 @@ -982,6 +1077,61 @@ Animator: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &6824902499205177888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6378453749366738950} + - component: {fileID: 1367185960650937854} + m_Layer: 0 + m_Name: PickCurve + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6378453749366738950 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6824902499205177888} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.29055557, y: 0.40266672, z: 0} + m_LocalScale: {x: 0.22222224, y: 0.22222224, z: 1} + m_Children: + - {fileID: 8229892935033794648} + - {fileID: 5727259875408126986} + - {fileID: 5887073583228178020} + m_Father: {fileID: 2890674062888421961} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1367185960650937854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6824902499205177888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 066a41e004f415b4eb74d5e61a2aadbe, type: 3} + m_Name: + m_EditorClassIdentifier: + curveColor: {r: 0, g: 1, b: 0, a: 1} + startPointColor: {r: 1, g: 0, b: 0, a: 1} + endPointColor: {r: 0, g: 0, b: 1, a: 1} + sampling: 25 + keyPoints: + - {fileID: 2500821779944748825} + - {fileID: 3508802522248597681} + - {fileID: 1230221333052491558} + normalizedTime: 0.5 --- !u!1 &6990946600413379120 GameObject: m_ObjectHideFlags: 0 @@ -1107,7 +1257,7 @@ Transform: m_Children: - {fileID: 3400679188163948944} m_Father: {fileID: 2890674062888421961} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8546211236212805674 SpriteRenderer: @@ -1179,6 +1329,53 @@ Animator: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &8177810443694880834 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5727259875408126986} + - component: {fileID: 3508802522248597681} + m_Layer: 0 + m_Name: Point 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5727259875408126986 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8177810443694880834} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.79, y: 5.8, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6378453749366738950} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3508802522248597681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8177810443694880834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} + m_Name: + m_EditorClassIdentifier: + curve: {fileID: 1367185960650937854} + handleType: 0 + leftHandleLocalPosition: {x: -1, y: -0, z: 0} + rightHandleLocalPosition: {x: 1, y: 0, z: -0} --- !u!1 &8284146705987220773 GameObject: m_ObjectHideFlags: 0 @@ -1207,6 +1404,7 @@ Transform: m_LocalPosition: {x: 5, y: -1.9, z: 0} m_LocalScale: {x: 4.5, y: 4.5, z: 1} m_Children: + - {fileID: 6378453749366738950} - {fileID: 4454582336686680825} - {fileID: 2611897720283921090} m_Father: {fileID: 3229117913716202416} @@ -1266,7 +1464,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 2890674062888421961} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8250682435774137887 SpriteRenderer: @@ -1319,3 +1517,34 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &9068570991608772132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1306622253208457060} + m_Layer: 0 + m_Name: Pivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1306622253208457060 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9068570991608772132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.84, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5722828240178235474} + m_Father: {fileID: 7001187974207596949} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg b/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg new file mode 100644 index 000000000..066095118 Binary files /dev/null and b/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg differ diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg.meta b/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg.meta new file mode 100644 index 000000000..c25cfd9d0 --- /dev/null +++ b/Assets/Resources/Sfx/games/cropStomp/veggieKay.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 846fce928f1403a4d913323050c3ad10 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg b/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg new file mode 100644 index 000000000..9439d8ccc Binary files /dev/null and b/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg differ diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg.meta b/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg.meta new file mode 100644 index 000000000..596018e12 --- /dev/null +++ b/Assets/Resources/Sfx/games/cropStomp/veggieMiss.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 58b4fa23fa22709409ac534d16680002 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg b/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg new file mode 100644 index 000000000..f9342301b Binary files /dev/null and b/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg differ diff --git a/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg.meta b/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg.meta new file mode 100644 index 000000000..e0cbbb41c --- /dev/null +++ b/Assets/Resources/Sfx/games/cropStomp/veggieOh.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 5cf7fb383a785c142afd865b84fca424 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/CropStomp/CropStomp.cs b/Assets/Scripts/Games/CropStomp/CropStomp.cs index d11c6c01b..f6a121b03 100644 --- a/Assets/Scripts/Games/CropStomp/CropStomp.cs +++ b/Assets/Scripts/Games/CropStomp/CropStomp.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using System; +using NaughtyBezierCurves; using DG.Tweening; using RhythmHeavenMania.Util; @@ -35,6 +36,7 @@ namespace RhythmHeavenMania.Games.CropStomp public Transform scrollingHolder; public Transform veggieHolder; public Farmer farmer; + public BezierCurve3D pickCurve; private Tween shakeTween; diff --git a/Assets/Scripts/Games/CropStomp/Veggie.cs b/Assets/Scripts/Games/CropStomp/Veggie.cs index 84a858b79..6ca189f8c 100644 --- a/Assets/Scripts/Games/CropStomp/Veggie.cs +++ b/Assets/Scripts/Games/CropStomp/Veggie.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using NaughtyBezierCurves; +using DG.Tweening; using RhythmHeavenMania.Util; @@ -9,6 +10,8 @@ namespace RhythmHeavenMania.Games.CropStomp { public class Veggie : PlayerActionObject { + static float pickedRotationSpeed = -1080f; + public bool isMole; public Sprite[] veggieSprites; public Sprite[] moleSprites; @@ -18,11 +21,14 @@ namespace RhythmHeavenMania.Games.CropStomp public float targetBeat; private float stompedBeat; + private float pickedBeat; private int veggieState = 0; private bool boinked; // Player got barely when trying to pick. private float landBeat; + private Tween squashTween; + private CropStomp game; private void Start() @@ -91,7 +97,7 @@ namespace RhythmHeavenMania.Games.CropStomp { veggieState = -1; - // Stuff that happens upon veggie landing goes here. + Jukebox.PlayOneShotGame("cropStomp/veggieMiss"); return; } @@ -107,7 +113,7 @@ namespace RhythmHeavenMania.Games.CropStomp veggieState = -1; boinked = true; - // Stuff that happens upon boink goes here. + Jukebox.PlayOneShot("miss"); MissedUpdate(); } @@ -132,7 +138,14 @@ namespace RhythmHeavenMania.Games.CropStomp private void PickedUpdate() { + float pickPosition = Conductor.instance.GetPositionFromBeat(pickedBeat, 1f); + pickPosition = Mathf.Clamp(pickPosition, 0, 1); + veggieTrans.position = game.pickCurve.GetPoint(pickPosition); + veggieTrans.rotation = Quaternion.Euler(0, 0, veggieTrans.rotation.eulerAngles.z + (pickedRotationSpeed * Time.deltaTime)); + + var veggieScale = Mathf.Min(1.5f - pickPosition, 1f); + veggieTrans.localScale = Vector2.one * veggieScale; } private void StompVeggie(bool autoTriggered) @@ -160,6 +173,18 @@ namespace RhythmHeavenMania.Games.CropStomp game.bodyAnim.Play("Stomp", 0, 0); } + if (!isMole) + { + BeatAction.New(gameObject, new List() + { + new BeatAction.Action(targetBeat - 0.5f, delegate { Jukebox.PlayOneShotGame("cropStomp/veggieOh"); }) + }); + } + + var veggieScale = veggieTrans.localScale; + veggieTrans.localScale = new Vector3(veggieScale.x * 0.5f, veggieScale.y, veggieScale.z); + squashTween = veggieTrans.DOScaleX(veggieScale.x, cond.secPerBeat * 0.5f / cond.musicSource.pitch); + ResetState(); Update(); // Update flying veggie state immediately. @@ -174,8 +199,26 @@ namespace RhythmHeavenMania.Games.CropStomp game.bodyAnim.Play("Pick", 0, 0); game.isFlicking = true; } + + var key1 = game.pickCurve.KeyPoints[0]; + var keyPos = key1.Position; + key1.Position = new Vector3(keyPos.x, veggieTrans.position.y, keyPos.z); - // Stuff that happens upon veggie picking goes here. + pickedBeat = Conductor.instance.songPositionInBeats; + + if (!isMole) + { + BeatAction.New(gameObject, new List() + { + new BeatAction.Action(pickedBeat + 0.5f, delegate { veggieSprite.sortingOrder = -1; }), + new BeatAction.Action(pickedBeat + 1f, delegate { GameObject.Destroy(gameObject); }) + }); + + Jukebox.PlayOneShotGame("cropStomp/veggieKay"); + } + + if (squashTween != null) + squashTween.Kill(true); PickedUpdate(); }