diff --git a/.idea/.idea.SpringJam2026/.idea/workspace.xml b/.idea/.idea.SpringJam2026/.idea/workspace.xml
index 47f46c4..975ab76 100644
--- a/.idea/.idea.SpringJam2026/.idea/workspace.xml
+++ b/.idea/.idea.SpringJam2026/.idea/workspace.xml
@@ -6,14 +6,22 @@
-
+
+
+
-
+
+
-
+
+
+
+
+
+
@@ -28,11 +36,13 @@
+
+
-
+
{
"associatedIndex": 6
@@ -101,13 +111,15 @@
-
+
-
+
diff --git a/Assets/Audio/SFX/airjump.wav.meta b/Assets/Audio/SFX/airjump.wav.meta
index cd79a58..8519956 100644
--- a/Assets/Audio/SFX/airjump.wav.meta
+++ b/Assets/Audio/SFX/airjump.wav.meta
@@ -11,7 +11,7 @@ AudioImporter:
compressionFormat: 1
quality: 1
conversionMode: 0
- preloadAudioData: 0
+ preloadAudioData: 1
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
diff --git a/Assets/Audio/SFX/bump.aiff.meta b/Assets/Audio/SFX/bump.aiff.meta
index b9c6a3e..470a230 100644
--- a/Assets/Audio/SFX/bump.aiff.meta
+++ b/Assets/Audio/SFX/bump.aiff.meta
@@ -11,7 +11,7 @@ AudioImporter:
compressionFormat: 1
quality: 1
conversionMode: 0
- preloadAudioData: 0
+ preloadAudioData: 1
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
diff --git a/Assets/Audio/SFX/death.wav.meta b/Assets/Audio/SFX/death.wav.meta
index 8f0e86c..f05e8f9 100644
--- a/Assets/Audio/SFX/death.wav.meta
+++ b/Assets/Audio/SFX/death.wav.meta
@@ -11,7 +11,7 @@ AudioImporter:
compressionFormat: 1
quality: 1
conversionMode: 0
- preloadAudioData: 0
+ preloadAudioData: 1
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
diff --git a/Assets/Audio/SFX/wind.wav.meta b/Assets/Audio/SFX/wind.wav.meta
index 58adfe3..4a14249 100644
--- a/Assets/Audio/SFX/wind.wav.meta
+++ b/Assets/Audio/SFX/wind.wav.meta
@@ -11,7 +11,7 @@ AudioImporter:
compressionFormat: 1
quality: 1
conversionMode: 0
- preloadAudioData: 0
+ preloadAudioData: 1
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
diff --git a/Assets/DefaultVolumeProfile.asset b/Assets/DefaultVolumeProfile.asset
index 0cd0e1a..8cea4d2 100644
--- a/Assets/DefaultVolumeProfile.asset
+++ b/Assets/DefaultVolumeProfile.asset
@@ -322,6 +322,9 @@ MonoBehaviour:
highQualityFiltering:
m_OverrideState: 1
m_Value: 0
+ filter:
+ m_OverrideState: 1
+ m_Value: 0
downscale:
m_OverrideState: 1
m_Value: 0
diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions
index 04b2ea2..5bcbbcb 100644
--- a/Assets/InputSystem_Actions.inputactions
+++ b/Assets/InputSystem_Actions.inputactions
@@ -14,6 +14,15 @@
"processors": "",
"interactions": "",
"initialStateCheck": false
+ },
+ {
+ "name": "Spawn",
+ "type": "Button",
+ "id": "872c318c-192f-4bba-a6d7-ba6e0c7ae7c6",
+ "expectedControlType": "",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
}
],
"bindings": [
@@ -104,6 +113,17 @@
"action": "Interact",
"isComposite": false,
"isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "423b0c40-8c5b-40c6-91d1-5b809e0cfa85",
+ "path": "/r",
+ "interactions": "",
+ "processors": "",
+ "groups": ";Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
+ "action": "Spawn",
+ "isComposite": false,
+ "isPartOfComposite": false
}
]
},
diff --git a/Assets/Prefabs/Catepillar/Player.prefab b/Assets/Prefabs/Catepillar/Player.prefab
index 82abc04..434e4ee 100644
--- a/Assets/Prefabs/Catepillar/Player.prefab
+++ b/Assets/Prefabs/Catepillar/Player.prefab
@@ -142,7 +142,6 @@ GameObject:
- component: {fileID: 849756540516150458}
- component: {fileID: 4169369283586250626}
- component: {fileID: 3534034070345576868}
- - component: {fileID: 4576448781989217082}
m_Layer: 0
m_Name: Player
m_TagString: Player
@@ -271,7 +270,6 @@ MonoBehaviour:
airJumpForce: 10
spriteRenderer: {fileID: 342790821639359709}
turnDelay: 0.08
- interactReference: {fileID: 1781555164194001046, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
impactPauseTime: 0.2
bouncePower: 5
animator: {fileID: 2598533458249844269}
@@ -283,36 +281,6 @@ MonoBehaviour:
bumpSound: {fileID: 8300000, guid: 7c28608e819f6574193756354a7974fe, type: 3}
windSound: {fileID: 2413457592393949793}
maxSpeedWindSound: 15
---- !u!114 &4576448781989217082
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7621021177568661959}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3}
- m_Name:
- m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.PlayerInput
- m_Actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
- m_NotificationBehavior: 3
- m_UIInputModule: {fileID: 0}
- m_DeviceLostEvent:
- m_PersistentCalls:
- m_Calls: []
- m_DeviceRegainedEvent:
- m_PersistentCalls:
- m_Calls: []
- m_ControlsChangedEvent:
- m_PersistentCalls:
- m_Calls: []
- m_ActionEvents: []
- m_NeverAutoSwitchControlSchemes: 0
- m_DefaultControlScheme:
- m_DefaultActionMap: Player
- m_SplitScreenIndex: -1
- m_Camera: {fileID: 0}
--- !u!1 &8270890549788907285
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Prefabs/UI/DeathScreen.prefab b/Assets/Prefabs/UI/DeathScreen.prefab
index a52cee4..ed4b4ab 100644
--- a/Assets/Prefabs/UI/DeathScreen.prefab
+++ b/Assets/Prefabs/UI/DeathScreen.prefab
@@ -10,8 +10,6 @@ GameObject:
m_Component:
- component: {fileID: 315795448353938977}
- component: {fileID: 7156060875641048167}
- - component: {fileID: 6275699004517191814}
- - component: {fileID: -131508972722898766}
m_Layer: 0
m_Name: DeathScreen
m_TagString: Untagged
@@ -57,113 +55,3 @@ MonoBehaviour:
m_PivotReferenceSize: 0
m_Pivot: 0
m_WorldSpaceCollider: {fileID: 0}
---- !u!82 &6275699004517191814
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6072795237519443946}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 0}
- m_Resource: {fileID: 8300000, guid: 9abfcb38929cf1241a742680b5fcf017, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 0.8
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 0
- DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
- Pan2D: 0
- rolloffMode: 0
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!114 &-131508972722898766
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6072795237519443946}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 2a3ba437acb54874092ae3d89c46b133, type: 3}
- m_Name:
- m_EditorClassIdentifier: Assembly-CSharp::UI.DeathScreen
- playerPrefab: {fileID: 7621021177568661959, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
diff --git a/Assets/Scenes/Bootstrap.unity b/Assets/Scenes/Bootstrap.unity
index 4d041f2..2ec7558 100644
--- a/Assets/Scenes/Bootstrap.unity
+++ b/Assets/Scenes/Bootstrap.unity
@@ -119,6 +119,218 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!1 &564331327
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 564331331}
+ - component: {fileID: 564331330}
+ - component: {fileID: 564331329}
+ - component: {fileID: 564331328}
+ m_Layer: 0
+ m_Name: Camera
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!114 &564331328
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 564331327}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData
+ m_RenderShadows: 1
+ m_RequiresDepthTextureOption: 2
+ m_RequiresOpaqueTextureOption: 2
+ m_CameraType: 0
+ m_Cameras: []
+ m_RendererIndex: -1
+ m_VolumeLayerMask:
+ serializedVersion: 2
+ m_Bits: 1
+ m_VolumeTrigger: {fileID: 0}
+ m_VolumeFrameworkUpdateModeOption: 2
+ m_RenderPostProcessing: 0
+ m_Antialiasing: 0
+ m_AntialiasingQuality: 2
+ m_StopNaN: 0
+ m_Dithering: 0
+ m_ClearDepth: 1
+ m_AllowXRRendering: 1
+ m_AllowHDROutput: 1
+ m_UseScreenCoordOverride: 0
+ m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
+ m_RequiresDepthTexture: 0
+ m_RequiresColorTexture: 0
+ m_TaaSettings:
+ m_Quality: 3
+ m_FrameInfluence: 0.1
+ m_JitterScale: 1
+ m_MipBias: 0
+ m_VarianceClampScale: 0.9
+ m_ContrastAdaptiveSharpening: 0
+ m_Version: 2
+--- !u!81 &564331329
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 564331327}
+ m_Enabled: 1
+--- !u!20 &564331330
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 564331327}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &564331331
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 564331327}
+ serializedVersion: 2
+ 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_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1131356124
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1131356126}
+ - component: {fileID: 1131356125}
+ - component: {fileID: 1131356127}
+ m_Layer: 0
+ m_Name: InputManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1131356125
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1131356124}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.PlayerInput
+ m_Actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
+ m_NotificationBehavior: 3
+ m_UIInputModule: {fileID: 0}
+ m_DeviceLostEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ m_DeviceRegainedEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ m_ControlsChangedEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ m_ActionEvents: []
+ m_NeverAutoSwitchControlSchemes: 0
+ m_DefaultControlScheme: Keyboard&Mouse
+ m_DefaultActionMap: Player
+ m_SplitScreenIndex: -1
+ m_Camera: {fileID: 0}
+--- !u!4 &1131356126
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1131356124}
+ serializedVersion: 2
+ 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_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1131356127
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1131356124}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: cae18a7c1c4314e4fb239ece5cef4996, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::Management.InputRouter
--- !u!1 &1327356647
GameObject:
m_ObjectHideFlags: 0
@@ -278,7 +490,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 0
+ m_IsActive: 1
--- !u!114 &1469922750
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -292,6 +504,10 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::State.Game.MainStateMachine
mainMenuPrefab: {fileID: 1522947426740712753, guid: 0453e357da6c33c468bb3d3726552b8e, type: 3}
+ playerPrefab: {fileID: 7621021177568661959, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
+ fruitsPrefab: {fileID: 3648719755775049102, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
+ deathScreenPrefab: {fileID: 6072795237519443946, guid: 439eaa80d7eac8d4db6eace5ddaf3489, type: 3}
+ deathSound: {fileID: 8300000, guid: 9abfcb38929cf1241a742680b5fcf017, type: 3}
--- !u!4 &1469922751
Transform:
m_ObjectHideFlags: 0
@@ -339,6 +555,7 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::Management.Services
bgm: {fileID: 1755353617}
sfx: {fileID: 1327356649}
+ inputRouter: {fileID: 1131356127}
--- !u!4 &1671688485
Transform:
m_ObjectHideFlags: 0
@@ -361,12 +578,12 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1671688483}
- m_Enabled: 0
+ m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4b256c4001284134990a2af43c375455, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Bootstrap
- startType: 1
+ startType: 3
gameStateMachine: {fileID: 1469922750}
--- !u!1 &1755353616
GameObject:
@@ -715,3 +932,5 @@ SceneRoots:
- {fileID: 1755353619}
- {fileID: 1327356648}
- {fileID: 1469922751}
+ - {fileID: 1131356126}
+ - {fileID: 564331331}
diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity
index 233db3a..0ede7bd 100644
--- a/Assets/Scenes/Game.unity
+++ b/Assets/Scenes/Game.unity
@@ -356,9 +356,9 @@ Camera:
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
- y: 0.0009259259
+ y: 0
width: 1
- height: 0.99814814
+ height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
@@ -4523,124 +4523,6 @@ BoxCollider2D:
m_AutoTiling: 0
m_Size: {x: 2, y: 0.5}
m_EdgeRadius: 0
---- !u!1001 &2062647807
-PrefabInstance:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_Modification:
- serializedVersion: 3
- m_TransformParent: {fileID: 0}
- m_Modifications:
- - target: {fileID: 4576448781989217082, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_Camera
- value:
- objectReference: {fileID: 1102711993}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalPosition.x
- value: -6.31
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalPosition.y
- value: -0.85
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalPosition.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalRotation.w
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalRotation.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6196444245332325679, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7621021177568661959, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
- propertyPath: m_Name
- value: Player
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_RemovedGameObjects: []
- m_AddedGameObjects: []
- m_AddedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: fbc05a08dfccd6a4cb1bcc1cf1910065, type: 3}
---- !u!1001 &4089110117659577756
-PrefabInstance:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_Modification:
- serializedVersion: 3
- m_TransformParent: {fileID: 0}
- m_Modifications:
- - target: {fileID: 3648719755775049102, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_Name
- value: Fruits
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalPosition.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalPosition.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalPosition.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalRotation.w
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalRotation.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 8964614072675907068, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_RemovedGameObjects: []
- m_AddedGameObjects: []
- m_AddedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: 067c711b87e00ef4d9158c92377f44a6, type: 3}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -4649,7 +4531,5 @@ SceneRoots:
- {fileID: 135794690}
- {fileID: 118420888}
- {fileID: 1755712273}
- - {fileID: 2062647807}
- {fileID: 1454353602}
- - {fileID: 4089110117659577756}
- {fileID: 219800105}
diff --git a/Assets/Scripts/Management/BGM.cs b/Assets/Scripts/Management/BGM.cs
index e798983..28b651c 100644
--- a/Assets/Scripts/Management/BGM.cs
+++ b/Assets/Scripts/Management/BGM.cs
@@ -36,6 +36,7 @@ namespace Management
TrackType.Muted => audioSources[0],
TrackType.Core => audioSources[1],
TrackType.Victory => audioSources[2],
+ _ => audioSources[0],
};
var targetAudioSource = type switch
@@ -43,6 +44,7 @@ namespace Management
TrackType.Muted => audioSources[0],
TrackType.Core => audioSources[1],
TrackType.Victory => audioSources[2],
+ _ => audioSources[0],
};
StartCoroutine(FadeInRoutine(currentAudioSource, targetAudioSource, t));
diff --git a/Assets/Scripts/Management/Bootstrap.cs b/Assets/Scripts/Management/Bootstrap.cs
index 9f11d77..0e34abc 100644
--- a/Assets/Scripts/Management/Bootstrap.cs
+++ b/Assets/Scripts/Management/Bootstrap.cs
@@ -23,6 +23,7 @@ namespace Management
{
Splash,
MainMenu,
+ StartGame,
Game
}
@@ -64,8 +65,12 @@ namespace Management
switch (startType)
{
case StartType.Splash:
+ case StartType.StartGame:
+ gameStateMachine.ChangeState(new StartGameState());
+ break;
case StartType.Game:
- throw new NotImplementedException();
+ gameStateMachine.ChangeState(new GameRunningState());
+ break;
case StartType.MainMenu:
default:
gameStateMachine.ChangeState(new MainMenuState());
diff --git a/Assets/Scripts/Management/InputRouter.cs b/Assets/Scripts/Management/InputRouter.cs
new file mode 100644
index 0000000..c9f7cbd
--- /dev/null
+++ b/Assets/Scripts/Management/InputRouter.cs
@@ -0,0 +1,49 @@
+using System;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+namespace Management
+{
+ public class InputRouter : MonoBehaviour
+ {
+ public event Action OnInteract;
+ private static InputRouter _instance;
+ private PlayerInput _playerInput;
+ private InputAction _interactAction;
+
+ private void Awake()
+ {
+ if (_instance != null && _instance != this)
+ {
+ Destroy(gameObject);
+ return;
+ }
+
+ _playerInput = GetComponent();
+ _playerInput.actions.Disable();
+ EnableGameActions();
+ }
+
+ public void EnableGameActions()
+ {
+ _playerInput.SwitchCurrentActionMap("Player");
+
+ _interactAction = _playerInput.actions.FindAction("Interact", true);
+ _interactAction.Enable();
+
+ _interactAction.performed += HandleInteraction;
+ _interactAction.canceled += HandleInteraction;
+
+ }
+
+ public void EnableUIActions()
+ {
+ _playerInput.SwitchCurrentActionMap("UI");
+ }
+
+ private void HandleInteraction(InputAction.CallbackContext context)
+ {
+ OnInteract?.Invoke(context.performed);
+ }
+ }
+}
diff --git a/Assets/Scripts/Management/InputRouter.cs.meta b/Assets/Scripts/Management/InputRouter.cs.meta
new file mode 100644
index 0000000..a33830a
--- /dev/null
+++ b/Assets/Scripts/Management/InputRouter.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: cae18a7c1c4314e4fb239ece5cef4996
\ No newline at end of file
diff --git a/Assets/Scripts/Management/Services.cs b/Assets/Scripts/Management/Services.cs
index 31e043c..6dbc7d2 100644
--- a/Assets/Scripts/Management/Services.cs
+++ b/Assets/Scripts/Management/Services.cs
@@ -16,9 +16,11 @@ namespace Management
// SFX service to serve as single spot SFX plays from.
public SFX SFX => sfx;
+ public InputRouter InputRouter => inputRouter;
[SerializeField] private BGM bgm;
[SerializeField] private SFX sfx;
+ [SerializeField] private InputRouter inputRouter;
private void Awake()
{
diff --git a/Assets/Scripts/Player/Movement.cs b/Assets/Scripts/Player/Movement.cs
index 104e4c4..fb4adb6 100644
--- a/Assets/Scripts/Player/Movement.cs
+++ b/Assets/Scripts/Player/Movement.cs
@@ -10,6 +10,8 @@ namespace Player
[RequireComponent(typeof(Rigidbody2D))]
public class Movement : MonoBehaviour
{
+ public event Action OnDeath;
+
private static readonly int Spring = Animator.StringToHash("spring");
private static readonly int Grounded = Animator.StringToHash("grounded");
private static readonly int Speed = Animator.StringToHash("speed");
@@ -20,7 +22,6 @@ namespace Player
[SerializeField] private float airJumpForce;
[SerializeField] private SpriteRenderer spriteRenderer;
[SerializeField] private float turnDelay;
- [SerializeField] private InputActionReference interactReference;
[SerializeField] private float impactPauseTime;
[SerializeField] private float bouncePower;
[SerializeField] private Animator animator;
@@ -52,25 +53,27 @@ namespace Player
private Vector2 _airJumpDir;
private bool _autoDrive = true;
private bool _deathArmed;
-
+
private void Awake()
{
- _rb = GetComponent();
- InputSystem.actions.FindActionMap("UI").Disable();
- InputSystem.actions.FindActionMap("Player").Enable();
- interactReference.action.performed += HandleInteraction;
- interactReference.action.canceled += HandleInteraction;
+ _rb = GetComponent();
}
-
+
private void Start()
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
+ Services.Instance.InputRouter.OnInteract += HandleInteraction;
}
-
- private void HandleInteraction(InputAction.CallbackContext obj)
+
+ private void OnDestroy()
{
- _interact = obj.ReadValueAsButton();
+ Services.Instance.InputRouter.OnInteract -= HandleInteraction;
+ }
+
+ private void HandleInteraction(bool pressed)
+ {
+ _interact = pressed;
_jumpPressedThisFrame = _interact;
}
@@ -112,16 +115,10 @@ namespace Player
_airJump = true;
}
- Debug.Log(_rb.linearVelocityY);
- windSound.volume = Mathf.Lerp(0, 1, _rb.linearVelocityY / maxSpeedWindSound);
+ windSound.volume = Mathf.Lerp(0, 1, Mathf.Abs(_rb.linearVelocityY / maxSpeedWindSound));
_jumpPressedThisFrame = false;
}
- private void OnDestroy()
- {
- windSound.volume = 0f;
- }
-
private void FixedUpdate()
{
if (_jump)
@@ -147,7 +144,7 @@ namespace Player
Services.Instance.SFX.PlayOneShot(springSound);
Services.Instance.BGM.FadeIn(BGM.TrackType.Core);
_fireSpring = false;
- _rb.linearVelocityX = 0;
+ _rb.linearVelocity = Vector2.zero;
_rb.AddForce(Vector2.up * springPower, ForceMode2D.Impulse);
}
if (_autoDrive)
@@ -187,8 +184,7 @@ namespace Player
private void HandleDeath()
{
- Instantiate(deathScreenPrefab, transform.position, Quaternion.identity);
- Destroy(gameObject);
+ OnDeath?.Invoke();
}
private void OnTriggerExit2D(Collider2D other)
diff --git a/Assets/Scripts/State/Game/GameRunningState.cs b/Assets/Scripts/State/Game/GameRunningState.cs
new file mode 100644
index 0000000..a421700
--- /dev/null
+++ b/Assets/Scripts/State/Game/GameRunningState.cs
@@ -0,0 +1,39 @@
+using System.Collections;
+using Management;
+using UnityEngine;
+
+namespace State.Game
+{
+ public class GameRunningState : MainGameState
+ {
+ public override void OnEnter(Machine machine)
+ {
+ base.OnEnter(machine);
+ MainStateMachine.Respawn();
+ MainStateMachine.PlayerMovement.OnDeath += HandleDeath;
+ }
+
+ private void HandleDeath()
+ {
+ MainStateMachine.StartCoroutine(DeathRoutine());
+ }
+
+ private IEnumerator DeathRoutine()
+ {
+ // Hide the guts
+ MainStateMachine.ShowDeathScreen(true);
+ Services.Instance.SFX.PlayOneShot(MainStateMachine.DeathSound);
+
+ // Cleanup before we remove player and fruits
+ MainStateMachine.PlayerMovement.OnDeath -= HandleDeath;
+ MainStateMachine.Respawn();
+
+ // Reregister events
+ MainStateMachine.PlayerMovement.OnDeath += HandleDeath;
+
+ // Wait a moment then restart the game
+ yield return new WaitForSeconds(2f);
+ MainStateMachine.ShowDeathScreen(false);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/State/Game/GameRunningState.cs.meta b/Assets/Scripts/State/Game/GameRunningState.cs.meta
new file mode 100644
index 0000000..4d59cb5
--- /dev/null
+++ b/Assets/Scripts/State/Game/GameRunningState.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 587d831b91074411bf3a4b0270225711
+timeCreated: 1777136024
\ No newline at end of file
diff --git a/Assets/Scripts/State/Game/MainMenuState.cs b/Assets/Scripts/State/Game/MainMenuState.cs
index 8567a1a..cf0f6b8 100644
--- a/Assets/Scripts/State/Game/MainMenuState.cs
+++ b/Assets/Scripts/State/Game/MainMenuState.cs
@@ -49,7 +49,6 @@ namespace State.Game
private void HandleStartGame()
{
_mainMenuInstance.OnStartGame -= HandleStartGame;
- Debug.Log("Starting game");
}
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/State/Game/MainStateMachine.cs b/Assets/Scripts/State/Game/MainStateMachine.cs
index 1168db7..e20f65b 100644
--- a/Assets/Scripts/State/Game/MainStateMachine.cs
+++ b/Assets/Scripts/State/Game/MainStateMachine.cs
@@ -1,11 +1,55 @@
-using UnityEngine;
+using System;
+using Player;
+using UnityEngine;
+using UnityEngine.UIElements;
namespace State.Game
{
public class MainStateMachine : Machine
{
public GameObject MainMenuPrefab => mainMenuPrefab;
-
+ public GameObject PlayerPrefab => playerPrefab;
+ public GameObject FruitsPrefab => fruitsPrefab;
+
+ public Movement PlayerMovement { get; private set; }
+ public AudioClip DeathSound => deathSound;
+
[SerializeField] private GameObject mainMenuPrefab;
+ [SerializeField] private GameObject playerPrefab;
+ [SerializeField] private GameObject fruitsPrefab;
+ [SerializeField] private GameObject deathScreenPrefab;
+ [SerializeField] private AudioClip deathSound;
+
+ private GameObject _playerInstance;
+ private GameObject _fruitsInstance;
+ private GameObject _deathScreenInstance;
+
+ private void Awake()
+ {
+ _deathScreenInstance = Instantiate(deathScreenPrefab);
+ ShowDeathScreen(false);
+ }
+
+ public void Respawn()
+ {
+ if (_fruitsInstance)
+ {
+ Destroy(_fruitsInstance);
+ }
+
+ if (_playerInstance)
+ {
+ Destroy(_playerInstance);
+ }
+ var respawn = GameObject.FindGameObjectWithTag("Respawn").transform;
+ _fruitsInstance = Instantiate(fruitsPrefab);
+ _playerInstance = Instantiate(playerPrefab, respawn.position, Quaternion.identity);
+ PlayerMovement = _playerInstance.GetComponent();
+ }
+
+ public void ShowDeathScreen(bool show)
+ {
+ _deathScreenInstance.GetComponent().rootVisualElement.Q().visible = show;
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/State/Game/StartGameState.cs b/Assets/Scripts/State/Game/StartGameState.cs
new file mode 100644
index 0000000..66f0a17
--- /dev/null
+++ b/Assets/Scripts/State/Game/StartGameState.cs
@@ -0,0 +1,31 @@
+using System.Collections;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+
+namespace State.Game
+{
+ public class StartGameState : MainGameState
+ {
+ public override void OnEnter(Machine machine)
+ {
+ base.OnEnter(machine);
+
+ }
+
+ private IEnumerator LoadGame()
+ {
+ var oldCam = Camera.main;
+ var handle = SceneManager.LoadSceneAsync("Game", LoadSceneMode.Additive);
+ if (handle != null)
+ {
+ while (!handle.isDone)
+ {
+ yield return null;
+ }
+ SceneManager.SetActiveScene(SceneManager.GetSceneByName("Game"));
+ oldCam?.gameObject.SetActive(false);
+ MainStateMachine.ChangeState(new GameRunningState());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/State/Game/StartGameState.cs.meta b/Assets/Scripts/State/Game/StartGameState.cs.meta
new file mode 100644
index 0000000..dbef27a
--- /dev/null
+++ b/Assets/Scripts/State/Game/StartGameState.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: eceabbf9f62345569805bb1a763abf24
+timeCreated: 1777135622
\ No newline at end of file
diff --git a/Assets/Scripts/UI/DeathScreen.cs b/Assets/Scripts/UI/DeathScreen.cs
deleted file mode 100644
index f4dd739..0000000
--- a/Assets/Scripts/UI/DeathScreen.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using UnityEngine;
-
-namespace UI
-{
- public class DeathScreen : MonoBehaviour
- {
- [SerializeField] private GameObject playerPrefab;
- [SerializeField] private GameObject fruitsPrefab;
-
- private float _timer;
-
- private void Update()
- {
- _timer += Time.deltaTime;
- if (_timer > 2f)
- {
- var spawnPos = GameObject.FindGameObjectWithTag("Respawn").transform.position;
- Instantiate(playerPrefab, spawnPos, Quaternion.identity);
- Destroy(gameObject);
- }
- }
- }
-}
diff --git a/Assets/Scripts/UI/DeathScreen.cs.meta b/Assets/Scripts/UI/DeathScreen.cs.meta
deleted file mode 100644
index c6f338e..0000000
--- a/Assets/Scripts/UI/DeathScreen.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 2a3ba437acb54874092ae3d89c46b133
\ No newline at end of file
diff --git a/Assets/UI Toolkit/PanelSettings.asset b/Assets/UI Toolkit/PanelSettings.asset
index 85cda34..feef7b1 100644
--- a/Assets/UI Toolkit/PanelSettings.asset
+++ b/Assets/UI Toolkit/PanelSettings.asset
@@ -18,13 +18,13 @@ MonoBehaviour:
m_RenderMode: 0
m_ColliderUpdateMode: 0
m_ColliderIsTrigger: 1
- m_ScaleMode: 1
+ m_ScaleMode: 2
m_ReferenceSpritePixelsPerUnit: 100
m_PixelsPerUnit: 100
m_Scale: 1
m_ReferenceDpi: 96
m_FallbackDpi: 96
- m_ReferenceResolution: {x: 1200, y: 800}
+ m_ReferenceResolution: {x: 1280, y: 720}
m_ScreenMatchMode: 0
m_Match: 0
m_SortingOrder: 0
@@ -39,7 +39,7 @@ MonoBehaviour:
m_MinAtlasSize: 64
m_MaxAtlasSize: 4096
m_MaxSubTextureSize: 64
- m_ActiveFilters: 31
+ m_ActiveFilters: -1
m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0}
m_DefaultShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0}
m_RuntimeGaussianBlurShader: {fileID: 20300, guid: 0000000000000000f000000000000000, type: 0}
diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset
index c188316..62b9c27 100644
--- a/ProjectSettings/EditorBuildSettings.asset
+++ b/ProjectSettings/EditorBuildSettings.asset
@@ -11,6 +11,9 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/MainMenu.unity
guid: d9e43626d738a3f448e4acc7b2c1dfe3
+ - enabled: 1
+ path: Assets/Scenes/Game.unity
+ guid: cd7b38ade83933e45843d4ffed0886d0
m_configObjects:
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
m_UseUCBPForAssetBundles: 0