diff --git a/Assets/Resources/PerformanceTestRunInfo.json b/Assets/Resources/PerformanceTestRunInfo.json
new file mode 100644
index 0000000..7bdf891
--- /dev/null
+++ b/Assets/Resources/PerformanceTestRunInfo.json
@@ -0,0 +1 @@
+{"TestSuite":"","Date":0,"Player":{"Development":false,"ScreenWidth":0,"ScreenHeight":0,"ScreenRefreshRate":0,"Fullscreen":false,"Vsync":0,"AntiAliasing":0,"Batchmode":false,"RenderThreadingMode":"GraphicsJobs","GpuSkinning":false,"Platform":"","ColorSpace":"","AnisotropicFiltering":"","BlendWeights":"","GraphicsApi":"","ScriptingBackend":"IL2CPP","AndroidTargetSdkVersion":"AndroidApiLevelAuto","AndroidBuildSystem":"Gradle","BuildTarget":"StandaloneWindows64","StereoRenderingPath":"MultiPass"},"Hardware":{"OperatingSystem":"","DeviceModel":"","DeviceName":"","ProcessorType":"","ProcessorCount":0,"GraphicsDeviceName":"","SystemMemorySizeMB":0},"Editor":{"Version":"6000.0.56f1","Branch":"6000.0/staging","Changeset":"9c7b5e468860","Date":1754996063},"Dependencies":["com.unity.collab-proxy@2.9.2","com.unity.feature.2d@2.0.1","com.unity.ide.rider@3.0.36","com.unity.ide.visualstudio@2.0.23","com.unity.inputsystem@1.14.2","com.unity.multiplayer.center@1.0.0","com.unity.render-pipelines.universal@17.0.4","com.unity.test-framework@1.5.1","com.unity.timeline@1.8.9","com.unity.ugui@2.0.0","com.unity.visualscripting@1.9.7","com.unity.modules.accessibility@1.0.0","com.unity.modules.ai@1.0.0","com.unity.modules.androidjni@1.0.0","com.unity.modules.animation@1.0.0","com.unity.modules.assetbundle@1.0.0","com.unity.modules.audio@1.0.0","com.unity.modules.cloth@1.0.0","com.unity.modules.director@1.0.0","com.unity.modules.imageconversion@1.0.0","com.unity.modules.imgui@1.0.0","com.unity.modules.jsonserialize@1.0.0","com.unity.modules.particlesystem@1.0.0","com.unity.modules.physics@1.0.0","com.unity.modules.physics2d@1.0.0","com.unity.modules.screencapture@1.0.0","com.unity.modules.terrain@1.0.0","com.unity.modules.terrainphysics@1.0.0","com.unity.modules.tilemap@1.0.0","com.unity.modules.ui@1.0.0","com.unity.modules.uielements@1.0.0","com.unity.modules.umbra@1.0.0","com.unity.modules.unityanalytics@1.0.0","com.unity.modules.unitywebrequest@1.0.0","com.unity.modules.unitywebrequestassetbundle@1.0.0","com.unity.modules.unitywebrequestaudio@1.0.0","com.unity.modules.unitywebrequesttexture@1.0.0","com.unity.modules.unitywebrequestwww@1.0.0","com.unity.modules.vehicles@1.0.0","com.unity.modules.video@1.0.0","com.unity.modules.vr@1.0.0","com.unity.modules.wind@1.0.0","com.unity.modules.xr@1.0.0","com.unity.modules.subsystems@1.0.0","com.unity.modules.hierarchycore@1.0.0","com.unity.ext.nunit@2.0.5","com.unity.render-pipelines.core@17.0.4","com.unity.shadergraph@17.0.4","com.unity.render-pipelines.universal-config@17.0.3","com.unity.2d.animation@10.2.1","com.unity.2d.pixel-perfect@5.0.3","com.unity.2d.psdimporter@9.1.0","com.unity.2d.sprite@1.0.0","com.unity.2d.spriteshape@10.0.7","com.unity.2d.tilemap@1.0.0","com.unity.2d.tilemap.extras@4.1.0","com.unity.2d.aseprite@1.1.10","com.unity.searcher@4.9.3","com.unity.burst@1.8.24","com.unity.mathematics@1.3.2","com.unity.collections@2.5.1","com.unity.rendering.light-transport@1.0.1","com.unity.2d.common@9.1.1","com.unity.nuget.mono-cecil@1.11.4","com.unity.test-framework.performance@3.1.0"],"Results":[]}
\ No newline at end of file
diff --git a/Assets/Resources/PerformanceTestRunInfo.json.meta b/Assets/Resources/PerformanceTestRunInfo.json.meta
new file mode 100644
index 0000000..6708761
--- /dev/null
+++ b/Assets/Resources/PerformanceTestRunInfo.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: eea93e0095a8f6548b3de5197c7db7bf
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/PerformanceTestRunSettings.json b/Assets/Resources/PerformanceTestRunSettings.json
new file mode 100644
index 0000000..49438ae
--- /dev/null
+++ b/Assets/Resources/PerformanceTestRunSettings.json
@@ -0,0 +1 @@
+{"MeasurementCount":-1}
\ No newline at end of file
diff --git a/Assets/Resources/PerformanceTestRunSettings.json.meta b/Assets/Resources/PerformanceTestRunSettings.json.meta
new file mode 100644
index 0000000..ef06557
--- /dev/null
+++ b/Assets/Resources/PerformanceTestRunSettings.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5f1fc9a7902195d41a049f82f5324678
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/Enemies/Enemy_1.prefab b/Assets/Resources/Prefabs/Enemies/Enemy_1.prefab
index ec2b432..5422d6d 100644
--- a/Assets/Resources/Prefabs/Enemies/Enemy_1.prefab
+++ b/Assets/Resources/Prefabs/Enemies/Enemy_1.prefab
@@ -383,7 +383,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1000010687763906}
serializedVersion: 2
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0.01, y: 2.41, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
@@ -393,7 +393,7 @@ Transform:
- {fileID: 4000011096997404}
- {fileID: 4000012210388068}
m_Father: {fileID: 4000011826580284}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+ m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &1000010773354092
GameObject:
m_ObjectHideFlags: 0
@@ -869,14 +869,14 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1000011821036864}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -4.8, z: 0}
m_LocalScale: {x: 0.35, y: 0.35, z: 0.35}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 4000013739681562}
m_Father: {fileID: 0}
- m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &95000013029897698
Animator:
serializedVersion: 7
diff --git a/Assets/Resources/Prefabs/Enemies/Enemy_2 Shooter.prefab b/Assets/Resources/Prefabs/Enemies/Enemy_2 Shooter.prefab
index d0056cd..103a411 100644
--- a/Assets/Resources/Prefabs/Enemies/Enemy_2 Shooter.prefab
+++ b/Assets/Resources/Prefabs/Enemies/Enemy_2 Shooter.prefab
@@ -79,5 +79,5 @@ MonoBehaviour:
m_EditorClassIdentifier:
projectilePrefab: {fileID: -4497857136159010500, guid: 6aec5580e6fdb3444ac411544f10714d, type: 3}
projectileLifetime: 1
- throwCooldown: 2
+ throwCooldown: 3
throwSpeed: 20
diff --git a/Assets/Resources/Prefabs/Enemies/Enemy_2.prefab b/Assets/Resources/Prefabs/Enemies/Enemy_2.prefab
index 38d799b..5cc41e3 100644
--- a/Assets/Resources/Prefabs/Enemies/Enemy_2.prefab
+++ b/Assets/Resources/Prefabs/Enemies/Enemy_2.prefab
@@ -658,7 +658,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1000011181302222}
serializedVersion: 2
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0.01, y: 2.41, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
@@ -668,7 +668,7 @@ Transform:
- {fileID: 4000011239351550}
- {fileID: 4000013766535124}
m_Father: {fileID: 4000010470550876}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &1000011292380708
GameObject:
m_ObjectHideFlags: 0
@@ -1523,14 +1523,14 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1000013301305156}
serializedVersion: 2
- m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -4.8, z: 0}
m_LocalScale: {x: 0.35, y: 0.35, z: 0.35}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 4000010603889990}
m_Father: {fileID: 0}
- m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &95000010530816694
Animator:
serializedVersion: 7
diff --git a/Assets/Resources/Prefabs/Utilities/Bg_Sky.prefab b/Assets/Resources/Prefabs/Utilities/Bg_Sky.prefab
index 50df1d3..cc76824 100644
--- a/Assets/Resources/Prefabs/Utilities/Bg_Sky.prefab
+++ b/Assets/Resources/Prefabs/Utilities/Bg_Sky.prefab
@@ -30,12 +30,9 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- - {fileID: 4568910939618707915}
- - {fileID: 4945695844205914268}
- - {fileID: 7145329757301456150}
- - {fileID: 1493966342818943289}
- - {fileID: 3049313107918372434}
- - {fileID: 3423802135481075782}
+ - {fileID: 8771789138547391772}
+ - {fileID: 7209511702480172213}
+ - {fileID: 4579250545244546028}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &-4557597942296888783
@@ -53,7 +50,7 @@ MonoBehaviour:
parallaxFactorX: 0.5
parallaxFactorY: 0.5
lockYAxis: 1
---- !u!1 &638635925705183315
+--- !u!1 &1572079136626096937
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -61,211 +58,37 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 3423802135481075782}
- - component: {fileID: 2143184429076685390}
+ - component: {fileID: 7209511702480172213}
+ - component: {fileID: 196688158156491355}
m_Layer: 0
- m_Name: Sky0002_Day (5)
+ m_Name: Sky_0 (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &3423802135481075782
+--- !u!4 &7209511702480172213
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 638635925705183315}
- serializedVersion: 2
- m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
- m_LocalPosition: {x: 163.8, y: 40.9, z: 0}
- m_LocalScale: {x: 4, y: 4, z: 4}
- m_ConstrainProportionsScale: 1
- m_Children: []
- m_Father: {fileID: 6442459723634259995}
- m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0}
---- !u!212 &2143184429076685390
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 638635925705183315}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RayTracingAccelStructBuildFlagsOverride: 0
- m_RayTracingAccelStructBuildFlags: 1
- m_SmallMeshCulling: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: -2004835105
- m_SortingLayer: -3
- m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!1 &665589977290385714
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1493966342818943289}
- - component: {fileID: 6807200879162590822}
- m_Layer: 0
- m_Name: Sky0002_Day (3)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1493966342818943289
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 665589977290385714}
- serializedVersion: 2
- m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
- m_LocalPosition: {x: 81.9, y: 40.9, z: 0}
- m_LocalScale: {x: 4, y: 4, z: 4}
- m_ConstrainProportionsScale: 1
- m_Children: []
- m_Father: {fileID: 6442459723634259995}
- m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0}
---- !u!212 &6807200879162590822
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 665589977290385714}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RayTracingAccelStructBuildFlagsOverride: 0
- m_RayTracingAccelStructBuildFlags: 1
- m_SmallMeshCulling: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: -2004835105
- m_SortingLayer: -3
- m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!1 &1867154853050777797
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 4945695844205914268}
- - component: {fileID: 7747398802158113972}
- m_Layer: 0
- m_Name: Sky0002_Day (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &4945695844205914268
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1867154853050777797}
+ m_GameObject: {fileID: 1572079136626096937}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 81.9, y: 0, z: 0}
+ m_LocalPosition: {x: 203.8, y: 20, z: 0}
m_LocalScale: {x: 4, y: 4, z: 4}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 6442459723634259995}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &7747398802158113972
+--- !u!212 &196688158156491355
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1867154853050777797}
+ m_GameObject: {fileID: 1572079136626096937}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -303,18 +126,18 @@ SpriteRenderer:
m_SortingLayerID: -2004835105
m_SortingLayer: -3
m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
+ m_Sprite: {fileID: 2410671940745902572, guid: 25cb7f3d57bee884b8217217cefc1d17, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
+ m_Size: {x: 40.96, y: 20.48}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!1 &6016673659688279398
+--- !u!1 &4725240563864685012
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -322,124 +145,37 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 7145329757301456150}
- - component: {fileID: 3282403523584641063}
+ - component: {fileID: 8771789138547391772}
+ - component: {fileID: 4980034302143162065}
m_Layer: 0
- m_Name: Sky0002_Day (2)
+ m_Name: Sky_0
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &7145329757301456150
+--- !u!4 &8771789138547391772
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6016673659688279398}
- serializedVersion: 2
- m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
- m_LocalPosition: {x: 0, y: 40.9, z: 0}
- m_LocalScale: {x: 4, y: 4, z: 4}
- m_ConstrainProportionsScale: 1
- m_Children: []
- m_Father: {fileID: 6442459723634259995}
- m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0}
---- !u!212 &3282403523584641063
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6016673659688279398}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RayTracingAccelStructBuildFlagsOverride: 0
- m_RayTracingAccelStructBuildFlags: 1
- m_SmallMeshCulling: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: -2004835105
- m_SortingLayer: -3
- m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!1 &7594079577513163465
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 3049313107918372434}
- - component: {fileID: 7765886033980668336}
- m_Layer: 0
- m_Name: Sky0002_Day (4)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &3049313107918372434
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7594079577513163465}
+ m_GameObject: {fileID: 4725240563864685012}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 163.8, y: 0, z: 0}
+ m_LocalPosition: {x: 40, y: 20, z: 0}
m_LocalScale: {x: 4, y: 4, z: 4}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 6442459723634259995}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &7765886033980668336
+--- !u!212 &4980034302143162065
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7594079577513163465}
+ m_GameObject: {fileID: 4725240563864685012}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -477,18 +213,18 @@ SpriteRenderer:
m_SortingLayerID: -2004835105
m_SortingLayer: -3
m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
+ m_Sprite: {fileID: 2410671940745902572, guid: 25cb7f3d57bee884b8217217cefc1d17, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
+ m_Size: {x: 40.96, y: 20.48}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!1 &8859934344668681744
+--- !u!1 &7384531676472615408
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -496,37 +232,37 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 4568910939618707915}
- - component: {fileID: 183542951972562688}
+ - component: {fileID: 4579250545244546028}
+ - component: {fileID: 6455803420189454178}
m_Layer: 0
- m_Name: Sky0002_Day
+ m_Name: Sky_0 (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &4568910939618707915
+--- !u!4 &4579250545244546028
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8859934344668681744}
+ m_GameObject: {fileID: 7384531676472615408}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalPosition: {x: 367.6, y: 20, z: 0}
m_LocalScale: {x: 4, y: 4, z: 4}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 6442459723634259995}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &183542951972562688
+--- !u!212 &6455803420189454178
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8859934344668681744}
+ m_GameObject: {fileID: 7384531676472615408}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -564,12 +300,12 @@ SpriteRenderer:
m_SortingLayerID: -2004835105
m_SortingLayer: -3
m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
+ m_Sprite: {fileID: 2410671940745902572, guid: 25cb7f3d57bee884b8217217cefc1d17, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
+ m_Size: {x: 40.96, y: 20.48}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
diff --git a/Assets/Resources/Scenes/Levels/1-1.unity b/Assets/Resources/Scenes/Levels/1-1.unity
index 2cb30e2..e0d6292 100644
--- a/Assets/Resources/Scenes/Levels/1-1.unity
+++ b/Assets/Resources/Scenes/Levels/1-1.unity
@@ -179,11 +179,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 66.99767
+ value: 67
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.0315459
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -722,7 +722,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.x
@@ -730,7 +730,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.y
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.z
@@ -742,7 +742,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -777,11 +777,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 77.26535
+ value: 77.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 4.7880926
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1095,11 +1095,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 46.739822
+ value: 46.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.7345583
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1157,11 +1157,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 75.34132
+ value: 75.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 4.695591
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1214,11 +1214,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 61.577087
+ value: 61.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.9195611
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1271,11 +1271,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 3.5990639
+ value: 3.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.35674024
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1477,11 +1477,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 1.0068321
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.3312832
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -1621,11 +1621,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 2.2334423
+ value: 2.25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.3198316
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7014,11 +7014,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.888979
+ value: 27
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.7725418
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7255,11 +7255,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 31.79156
+ value: 32
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.7725418
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7399,11 +7399,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 81.22442
+ value: 81
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 4.862094
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7553,11 +7553,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 37.896667
+ value: 38
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.97702813
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7717,11 +7717,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 41.171227
+ value: 41
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.8650434
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7801,11 +7801,77 @@ Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
m_PrefabInstance: {fileID: 389735964}
m_PrefabAsset: {fileID: 0}
+--- !u!4 &1088317138 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ m_PrefabInstance: {fileID: 1108231752}
+ m_PrefabAsset: {fileID: 0}
--- !u!4 &1104137611 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
m_PrefabInstance: {fileID: 608729446}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1108231752
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1500894798}
+ m_Modifications:
+ - target: {fileID: 371957641347287828, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_Name
+ value: Bg_Sky
+ objectReference: {fileID: 0}
+ - target: {fileID: 371957641347287828, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 2.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: f028f071f79053743904371eda5aa775, type: 3}
--- !u!1 &1216052281
GameObject:
m_ObjectHideFlags: 0
@@ -7822,7 +7888,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &1216052282
Transform:
m_ObjectHideFlags: 0
@@ -7879,11 +7945,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 44.24228
+ value: 44
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.7910421
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -7941,11 +8007,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 15.381777
+ value: 15
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.846545
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -8010,19 +8076,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -8030,7 +8096,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -8055,11 +8121,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 48.293854
+ value: 48
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.716058
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -8112,11 +8178,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: -11.62574
+ value: -11.75
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.6792533
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -8394,6 +8460,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1216052282}
+ - {fileID: 1088317138}
- {fileID: 886511364}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -19624,19 +19691,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -19644,7 +19711,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -19669,11 +19736,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 59.338547
+ value: 59
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.8455598
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -20191,11 +20258,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 54.065956
+ value: 54
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 4.307085
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -20248,11 +20315,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 79.318886
+ value: 79
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 4.8435936
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
diff --git a/Assets/Resources/Scenes/Levels/1-2.unity b/Assets/Resources/Scenes/Levels/1-2.unity
index bbd13ac..328c0c8 100644
--- a/Assets/Resources/Scenes/Levels/1-2.unity
+++ b/Assets/Resources/Scenes/Levels/1-2.unity
@@ -307,11 +307,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 84.76279
+ value: 85
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.99914646
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -369,11 +369,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 7.340159
+ value: 7.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.9217014
+ value: 7
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -417,93 +417,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
m_PrefabInstance: {fileID: 97074340}
m_PrefabAsset: {fileID: 0}
---- !u!1 &98340462
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 98340463}
- - component: {fileID: 98340464}
- m_Layer: 0
- m_Name: Sky0002_Day
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &98340463
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 98340462}
- serializedVersion: 2
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 81.8, y: 0, z: 0}
- m_LocalScale: {x: 4, y: 4, z: 4}
- m_ConstrainProportionsScale: 1
- m_Children: []
- m_Father: {fileID: 1709775522}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &98340464
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 98340462}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RayTracingAccelStructBuildFlagsOverride: 0
- m_RayTracingAccelStructBuildFlags: 1
- m_SmallMeshCulling: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: -2004835105
- m_SortingLayer: -3
- m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
--- !u!1001 &164352843
PrefabInstance:
m_ObjectHideFlags: 0
@@ -518,11 +431,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 46.632233
+ value: 46.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.9085808
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59372,21 +59285,17 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1380194665}
m_Modifications:
- - target: {fileID: -4557597942296888783, guid: f028f071f79053743904371eda5aa775, type: 3}
- propertyPath: lockYAxis
- value: 1
- objectReference: {fileID: 0}
- target: {fileID: 371957641347287828, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_Name
value: Bg_Sky
objectReference: {fileID: 0}
- target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_LocalPosition.x
- value: -0.12675886
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.2426212
+ value: 2.7
objectReference: {fileID: 0}
- target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_LocalPosition.z
@@ -59422,13 +59331,7 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects:
- - targetCorrespondingSourceObject: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
- insertIndex: -1
- addedObject: {fileID: 98340463}
- - targetCorrespondingSourceObject: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
- insertIndex: -1
- addedObject: {fileID: 1768737810}
+ m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f028f071f79053743904371eda5aa775, type: 3}
--- !u!1001 &187215680
@@ -59445,11 +59348,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 28.970818
+ value: 29
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.048501
+ value: 6
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59507,11 +59410,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 86.86857
+ value: 87
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.0897174
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59569,11 +59472,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 42.081024
+ value: 42
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 3.0596495
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59752,11 +59655,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 30.6011
+ value: 30.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.048501
+ value: 6
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59848,6 +59751,7 @@ Transform:
- {fileID: 164352844}
- {fileID: 1673622718}
- {fileID: 1360860352}
+ - {fileID: 1949116409}
- {fileID: 769614387}
- {fileID: 1031463750}
- {fileID: 1334819894}
@@ -59875,11 +59779,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 39.27331
+ value: 39
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 2.9917212
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -59937,11 +59841,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 73.98481
+ value: 74
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 3.1728625
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -60209,11 +60113,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: -4.087731
+ value: -4.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.84065104
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -60271,11 +60175,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 61.350117
+ value: 60.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.9538648
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -60481,11 +60385,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 24.102608
+ value: 24
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 7.9052134
+ value: 8
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -60804,11 +60708,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 62.731327
+ value: 62.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.9538648
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -60866,11 +60770,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 20.728813
+ value: 21
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 9.943069
+ value: 10
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -95905,11 +95809,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 72.263954
+ value: 72
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 3.1275768
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96066,7 +95970,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.x
@@ -96074,7 +95978,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.y
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.z
@@ -96086,7 +95990,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -96116,11 +96020,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: -5.8312297
+ value: -6
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.84065104
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96265,11 +96169,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 65.04089
+ value: 66
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 3.2407908
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96327,11 +96231,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 53.764767
+ value: 52.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.0217934
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96510,11 +96414,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 78.51337
+ value: 78.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.9085746
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96572,11 +96476,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 8.728111
+ value: 9
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.931573
+ value: 7
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96634,11 +96538,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 40.722454
+ value: 40.5
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 3.0596495
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96818,11 +96722,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 45.18309
+ value: 45.25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.9538665
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -96979,19 +96883,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -96999,7 +96903,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -97041,7 +96945,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.x
@@ -97049,7 +96953,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.y
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.z
@@ -97061,7 +96965,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -97178,11 +97082,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 48.171944
+ value: 47.75
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.0444374
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -97240,11 +97144,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.457462
+ value: 26
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 7.9504986
+ value: 8
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -97394,11 +97298,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 43.937737
+ value: 44
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.88593817
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -97456,11 +97360,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 77.17744
+ value: 77
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.99914646
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -97591,93 +97495,6 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!1 &1768737809
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1768737810}
- - component: {fileID: 1768737811}
- m_Layer: 0
- m_Name: Sky0002_Day (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1768737810
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1768737809}
- serializedVersion: 2
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 4, y: 4, z: 4}
- m_ConstrainProportionsScale: 1
- m_Children: []
- m_Father: {fileID: 1709775522}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1768737811
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1768737809}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RayTracingAccelStructBuildFlagsOverride: 0
- m_RayTracingAccelStructBuildFlags: 1
- m_SmallMeshCulling: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: -2004835105
- m_SortingLayer: -3
- m_SortingOrder: 0
- m_Sprite: {fileID: 21300000, guid: 0d7e10cbe22bec44aba039ca0a3ba445, type: 3}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 20.48, y: 10.24}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
--- !u!1001 &1788308953
PrefabInstance:
m_ObjectHideFlags: 0
@@ -97692,11 +97509,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 32.140812
+ value: 32
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.025858
+ value: 6
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -97965,11 +97782,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 68.98074
+ value: 69
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 7.135358
+ value: 7
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -98027,11 +97844,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 15.181318
+ value: 15
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 9.852498
+ value: 10
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -98229,6 +98046,68 @@ MonoBehaviour:
offset: {x: 2, y: 1}
faceLeft: 0
snapOnFound: 1
+--- !u!1001 &1949116408
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 393336528}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (30)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 54
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0.12992167
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &1949116409 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 1949116408}
+ m_PrefabAsset: {fileID: 0}
--- !u!1 &1949199530
GameObject:
m_ObjectHideFlags: 0
@@ -98505,7 +98384,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.x
@@ -98513,7 +98392,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.y
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.z
@@ -98525,7 +98404,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -98699,11 +98578,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 89.11021
+ value: 89
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.1576457
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
diff --git a/Assets/Resources/Scenes/Levels/1-3.unity b/Assets/Resources/Scenes/Levels/1-3.unity
index 8314cb4..cb8fde8 100644
--- a/Assets/Resources/Scenes/Levels/1-3.unity
+++ b/Assets/Resources/Scenes/Levels/1-3.unity
@@ -138,11 +138,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 24.922873
+ value: 25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.3508415
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -224809,11 +224809,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 24.906591
+ value: 25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.2436893
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -224871,11 +224871,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 27.560503
+ value: 27
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.2111259
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225088,11 +225088,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.209124
+ value: 26
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.259971
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225212,11 +225212,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 24.939154
+ value: 25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.43464303
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225274,11 +225274,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.290533
+ value: 26
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.81904435
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225336,11 +225336,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.176561
+ value: 26
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.3671231
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225451,6 +225451,130 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
m_PrefabInstance: {fileID: 1404146902}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &639691273
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (28)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 29
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &639691274 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 639691273}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &652517782
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (26)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 27
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &652517783 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 652517782}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &749388942
PrefabInstance:
m_ObjectHideFlags: 0
@@ -225465,11 +225589,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 27.479094
+ value: 27
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.3508415
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225527,7 +225651,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalPosition.x
- value: 80.306244
+ value: 83
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalPosition.y
@@ -225539,19 +225663,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -225559,7 +225683,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -225589,11 +225713,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 31.207594
+ value: 30
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.4485316
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225690,8 +225814,76 @@ Transform:
- {fileID: 1275304814}
- {fileID: 1981967925}
- {fileID: 1403561794}
+ - {fileID: 1132970393}
+ - {fileID: 1658199914}
+ - {fileID: 652517783}
+ - {fileID: 1469770991}
+ - {fileID: 639691274}
+ - {fileID: 1775608960}
m_Father: {fileID: 1525139460}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1014355137
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2026053949}
+ m_Modifications:
+ - target: {fileID: 1000013301305156, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_Name
+ value: Enemy_2
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 98
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -2.58
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+--- !u!4 &1014355138 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ m_PrefabInstance: {fileID: 1014355137}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &1073019466
PrefabInstance:
m_ObjectHideFlags: 0
@@ -225706,11 +225898,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 29.970186
+ value: 29
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.2762525
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225768,11 +225960,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 29.986467
+ value: 29
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.383405
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225816,6 +226008,68 @@ Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
m_PrefabInstance: {fileID: 1082885826}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1132970392
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (24)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 25
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &1132970393 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 1132970392}
+ m_PrefabAsset: {fileID: 0}
--- !u!4 &1141515702 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
@@ -225835,11 +226089,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 28.700216
+ value: 28
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.90045285
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225897,11 +226151,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 24.906591
+ value: 25
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.9655793
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -225959,11 +226213,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 28.732782
+ value: 28
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -3.3996868
+ value: -3.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226021,11 +226275,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 28.781626
+ value: 28
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.46720624
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226083,7 +226337,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalPosition.x
- value: 96.92299
+ value: 100
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalPosition.y
@@ -226095,19 +226349,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -226115,7 +226369,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -226242,11 +226496,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 31.20759
+ value: 30
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.35323453
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226352,6 +226606,68 @@ Transform:
m_CorrespondingSourceObject: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
m_PrefabInstance: {fileID: 6464502455774060025}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1469770990
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (27)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 28
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &1469770991 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 1469770990}
+ m_PrefabAsset: {fileID: 0}
--- !u!1 &1525139459
GameObject:
m_ObjectHideFlags: 0
@@ -226400,11 +226716,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 31.175028
+ value: 30
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.8597486
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226462,7 +226778,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalPosition.x
- value: 86.79519
+ value: 93
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalPosition.y
@@ -226474,19 +226790,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -226494,7 +226810,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -226510,6 +226826,68 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4000010470550876, guid: ce611ebabf8eb0f4683c660f008c8b88, type: 3}
m_PrefabInstance: {fileID: 1633380584}
m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1658199913
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (25)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 26
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &1658199914 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 1658199913}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &1667111035
PrefabInstance:
m_ObjectHideFlags: 0
@@ -226624,6 +227002,68 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
+--- !u!1001 &1775608959
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 975956631}
+ m_Modifications:
+ - target: {fileID: 351781492710161714, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_Name
+ value: Coin (29)
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.9908966
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+--- !u!4 &1775608960 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
+ m_PrefabInstance: {fileID: 1775608959}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &1809275861
PrefabInstance:
m_ObjectHideFlags: 0
@@ -226638,11 +227078,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 27.641909
+ value: 27
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.27182603
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226700,11 +227140,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 28.716497
+ value: 28
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.0971544
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226762,11 +227202,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 29.856215
+ value: 29
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.8597486
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226824,11 +227264,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 31.158747
+ value: 30
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -2.1459992
+ value: -2.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -226898,19 +227338,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.w
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.x
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.y
- value: -0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -226918,7 +227358,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 0
+ value: 180
objectReference: {fileID: 0}
- target: {fileID: 5853556254035132809, guid: 719adb0826e18974496b52e0c8aedb8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -227014,11 +227454,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 29.953905
+ value: 29
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.3695166
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -227093,6 +227533,7 @@ Transform:
m_Children:
- {fileID: 1445749208}
- {fileID: 346147385}
+ - {fileID: 1014355138}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &2049664495
@@ -227166,11 +227607,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 26.323095
+ value: 26
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: 0.38579774
+ value: -0.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -227228,11 +227669,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.x
- value: 27.576784
+ value: 27
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.y
- value: -0.85160756
+ value: -1.3
objectReference: {fileID: 0}
- target: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
propertyPath: m_LocalPosition.z
@@ -227294,7 +227735,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_LocalPosition.y
- value: 0
+ value: 0.8
objectReference: {fileID: 0}
- target: {fileID: 6442459723634259995, guid: f028f071f79053743904371eda5aa775, type: 3}
propertyPath: m_LocalPosition.z
diff --git a/Assets/Resources/Scenes/MainMenu.unity b/Assets/Resources/Scenes/MainMenu.unity
index bf52b04..31bc60d 100644
--- a/Assets/Resources/Scenes/MainMenu.unity
+++ b/Assets/Resources/Scenes/MainMenu.unity
@@ -404,19 +404,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
propertyPath: m_LocalRotation.w
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
- propertyPath: m_LocalRotation.x
- value: -0
- objectReference: {fileID: 0}
- - target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
- propertyPath: m_LocalRotation.y
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
propertyPath: m_LocalRotation.z
- value: -0
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -424,7 +424,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
- value: 180
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 4000011826580284, guid: 93b90907e99e38a448aca4707806a9be, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
diff --git a/Assets/Resources/Scripts.zip b/Assets/Resources/Scripts.zip
new file mode 100644
index 0000000..acb07a0
Binary files /dev/null and b/Assets/Resources/Scripts.zip differ
diff --git a/Assets/Resources/Scripts.zip.meta b/Assets/Resources/Scripts.zip.meta
new file mode 100644
index 0000000..a4f6608
--- /dev/null
+++ b/Assets/Resources/Scripts.zip.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2c51629bc32dcf149a07c09736ee7cc0
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Scripts/Behaviour/BGParallax.cs b/Assets/Resources/Scripts/Behaviour/BGParallax.cs
index 2e2e42b..4be210f 100644
--- a/Assets/Resources/Scripts/Behaviour/BGParallax.cs
+++ b/Assets/Resources/Scripts/Behaviour/BGParallax.cs
@@ -1,26 +1,29 @@
using UnityEngine;
-public class BGParallax : MonoBehaviour
+namespace RR.Game2D.Core
{
- [SerializeField][Range(-1f, 3f)] private float parallaxFactorX = 0.5f;
- [SerializeField][Range(-1f, 3f)] private float parallaxFactorY = 0.5f;
- [SerializeField] private bool lockYAxis = false;
- private Transform cameraTransform;
- private Vector3 previousCameraPosition;
-
- void Start()
+ public class BGParallax : MonoBehaviour
{
- cameraTransform = Camera.main.transform;
- previousCameraPosition = cameraTransform.position;
- }
+ [SerializeField][Range(-1f, 3f)] private float parallaxFactorX = 0.5f;
+ [SerializeField][Range(-1f, 3f)] private float parallaxFactorY = 0.5f;
+ [SerializeField] private bool lockYAxis = false;
+ private Transform cameraTransform;
+ private Vector3 previousCameraPosition;
- void LateUpdate()
- {
- Vector3 delta = cameraTransform.position - previousCameraPosition;
- if (lockYAxis)
- transform.position += new Vector3(delta.x * parallaxFactorX, 0, 0);
- else
- transform.position += new Vector3(delta.x * parallaxFactorX, delta.y * parallaxFactorY, 0);
- previousCameraPosition = cameraTransform.position;
+ void Start()
+ {
+ cameraTransform = Camera.main.transform;
+ previousCameraPosition = cameraTransform.position;
+ }
+
+ void LateUpdate()
+ {
+ Vector3 delta = cameraTransform.position - previousCameraPosition;
+ if (lockYAxis)
+ transform.position += new Vector3(delta.x * parallaxFactorX, 0, 0);
+ else
+ transform.position += new Vector3(delta.x * parallaxFactorX, delta.y * parallaxFactorY, 0);
+ previousCameraPosition = cameraTransform.position;
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Behaviour/CameraFollow.cs b/Assets/Resources/Scripts/Behaviour/CameraFollow.cs
index 3fc0ed9..281811c 100644
--- a/Assets/Resources/Scripts/Behaviour/CameraFollow.cs
+++ b/Assets/Resources/Scripts/Behaviour/CameraFollow.cs
@@ -1,101 +1,115 @@
using System.Collections;
using UnityEngine;
-public class CameraFollow2D : MonoBehaviour
+namespace RR.Game2D.Core
{
- [Header("Follow")]
- public float damping = 1.5f;
- public Vector2 offset = new(2f, 1f);
- public bool faceLeft;
-
- [Header("Behaviour")]
- public bool snapOnFound = true; // мгновенно «прилипнуть», когда нашли игрока
-
- private Transform player;
- private float lastX;
- private Coroutine bindRoutine;
-
- void OnEnable()
+ public class CameraFollow2D : MonoBehaviour
{
- offset = new Vector2(Mathf.Abs(offset.x), offset.y);
- // запускаем цикл привязки — он подождёт появления игрока в билде
- bindRoutine = StartCoroutine(BindLoop());
- }
+ [Header("Follow")]
+ public float damping = 1.5f;
+ public Vector2 offset = new(2f, 1f);
+ public bool faceLeft;
- void OnDisable()
- {
- if (bindRoutine != null) { StopCoroutine(bindRoutine); bindRoutine = null; }
- }
+ [Header("Behaviour")]
+ public bool snapOnFound = true;
- // Главный цикл: если игрока нет/его уничтожили — пытаемся найти снова
- private IEnumerator BindLoop()
- {
- while (true)
+ private Transform player;
+ private float lastX;
+ private Coroutine bindRoutine;
+
+ void OnEnable()
{
+ offset = new Vector2(Mathf.Abs(offset.x), offset.y);
+ bindRoutine = StartCoroutine(BindLoop());
+ }
+
+ void OnDisable()
+ {
+ if (bindRoutine != null) { StopCoroutine(bindRoutine); bindRoutine = null; }
+ }
+
+ void FixedUpdate()
+ {
+ if (!player) return; // ждём появления
+
+ float currentX = player.position.x;
+ if (currentX > lastX + 0.01f) faceLeft = false;
+ else if (currentX < lastX - 0.01f) faceLeft = true;
+ lastX = currentX;
+
+ Vector3 target = player.position;
+ target.x += faceLeft ? -offset.x : +offset.x;
+ target.y += offset.y;
+ target.z = transform.position.z;
+
+ transform.position = Vector3.Lerp(transform.position, target, damping * Time.deltaTime);
+ }
+
+ ///
+ /// Цикл привязки камеры к игроку. Ищет игрока на сцене.
+ ///
+ private IEnumerator BindLoop()
+ {
+ while (true)
+ {
+ if (!player)
+ {
+ var t = ResolvePlayer();
+ if (t)
+ {
+ player = t;
+ lastX = player.position.x;
+ if (snapOnFound) SnapToPlayer(faceLeft);
+ }
+ }
+ yield return null; // подождём кадр
+ }
+ }
+
+ ///
+ /// Метод для поиска объекта игрока.
+ /// Сначала ищет экземпляр объекта игрока в GameManager,
+ /// затем, ели не нашел, то ищет по тегу на сцене
+ ///
+ /// Transform playerPosition - позиция игрокка
+ private Transform ResolvePlayer()
+ {
+ if (GameManager.Instance && GameManager.Instance.PlayerObj)
+ return GameManager.Instance.PlayerObj.transform;
+
+ var go = GameObject.FindWithTag("Player");
+ return go ? go.transform : null;
+ }
+
+ ///
+ /// Метод для поиска игрока и привязки к нему камеры.
+ ///
+ /// Повернут ли игрок налево
+ public void FindPlayer(bool playerFaceLeft)
+ {
+ faceLeft = playerFaceLeft;
+ player = ResolvePlayer();
if (!player)
{
- var t = ResolvePlayer();
- if (t)
- {
- player = t;
- lastX = player.position.x;
- if (snapOnFound) SnapToPlayer(faceLeft);
- }
+ Debug.Log("CameraFollow2D: player not found yet, will wait.");
+ return;
}
- yield return null; // подождём кадр
+ lastX = player.position.x;
+ SnapToPlayer(faceLeft);
}
- }
- // Пытаемся получить трансформ игрока сначала из GameManager, потом по тегу
- private Transform ResolvePlayer()
- {
- // 1) Через GameManager, если он есть и уже создал игрока
- if (GameManager.Instance && GameManager.Instance.PlayerObj)
- return GameManager.Instance.PlayerObj.transform;
-
- // 2) Фолбэк по тегу (если префаб помечен "Player")
- var go = GameObject.FindWithTag("Player");
- return go ? go.transform : null;
- }
-
- // Совместимость с твоим прежним API — теперь безопасно
- public void FindPlayer(bool playerFaceLeft)
- {
- faceLeft = playerFaceLeft;
- player = ResolvePlayer();
- if (!player)
+ ///
+ /// Метод для привязки камеры к игроку.
+ ///
+ /// Повернут ли игрок налево
+ private void SnapToPlayer(bool playerFaceLeft)
{
- Debug.Log("CameraFollow2D: player not found yet, will wait.");
- return; // BindLoop сам подцепит позже
+ if (!player) return;
+ Vector3 p = player.position;
+ p.x += (playerFaceLeft ? -offset.x : offset.x);
+ p.y += offset.y;
+ p.z = transform.position.z;
+ transform.position = p;
}
- lastX = player.position.x;
- SnapToPlayer(faceLeft);
}
-
- private void SnapToPlayer(bool playerFaceLeft)
- {
- if (!player) return;
- Vector3 p = player.position;
- p.x += (playerFaceLeft ? -offset.x : offset.x);
- p.y += offset.y;
- p.z = transform.position.z;
- transform.position = p;
- }
-
- void FixedUpdate()
- {
- if (!player) return; // ждём появления
-
- float currentX = player.position.x;
- if (currentX > lastX + 0.01f) faceLeft = false;
- else if (currentX < lastX - 0.01f) faceLeft = true;
- lastX = currentX;
-
- Vector3 target = player.position;
- target.x += faceLeft ? -offset.x : +offset.x;
- target.y += offset.y;
- target.z = transform.position.z;
-
- transform.position = Vector3.Lerp(transform.position, target, damping * Time.deltaTime);
- }
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Behaviour/EnemyFireScript.cs b/Assets/Resources/Scripts/Behaviour/EnemyFireScript.cs
index 7eed926..3604214 100644
--- a/Assets/Resources/Scripts/Behaviour/EnemyFireScript.cs
+++ b/Assets/Resources/Scripts/Behaviour/EnemyFireScript.cs
@@ -1,60 +1,70 @@
-using Unity.VisualScripting;
-using UnityEngine;
+using UnityEngine;
+using RR.Game2D.Entities.Projectiles;
-public class EnemyFireScript : MonoBehaviour
+namespace RR.Game2D.Behaviour
{
- [Header("Снаряд")]
- [SerializeField] private BasicProjectile projectilePrefab;
- [SerializeField] private float projectileLifetime = 1f;
- [SerializeField] private float throwCooldown = 5f;
- [SerializeField] private float throwSpeed = 20f;
-
- private float lastThrowTime = -999f;
- private BasicProjectile projectile;
-
- //private BasicProjectile projectile;
-
- void Start()
+ public class EnemyFireScript : MonoBehaviour
{
- lastThrowTime = Time.time;
- }
+ [Header("Снаряд")]
+ [SerializeField] private BasicProjectile projectilePrefab;
+ [SerializeField] private float projectileLifetime = 1f;
+ [SerializeField] private float throwCooldown = 5f;
+ [SerializeField] private float throwSpeed = 20f;
- void Update()
- {
- if (!projectilePrefab)
- {
- Debug.LogError("EnemyFireScript: projectile prefab missing; assign projectile prefab in the inspector");
- return;
- }
+ private float lastThrowTime = -999f;
+ private BasicProjectile projectile;
- if (Time.time - lastThrowTime >= throwCooldown)
+ void Start()
{
- Throw();
lastThrowTime = Time.time;
}
- if (projectile != null && Time.time - lastThrowTime >= projectile.maxLifetime)
- projectile.Despawn();
+ void Update()
+ {
+ if (!projectilePrefab)
+ {
+ Debug.LogError("EnemyFireScript: projectile prefab missing; assign projectile prefab in the inspector");
+ return;
+ }
+
+ if (projectile != null && Time.time - lastThrowTime >= projectile.maxLifetime)
+ projectile.Despawn();
+
+ // Бросок
+ if (Time.time - lastThrowTime >= throwCooldown)
+ Throw();
+ }
+
+ private void OnDestroy()
+ {
+ // При смерти врага сго снаряд тоже пропадает
+ if (projectile != null) projectile.Despawn();
+ }
+
+ ///
+ /// Метод для броска снаряда (выстрела).
+ /// У снаряда обязательно должен быть метод Launch(Vector2 direction)
+ ///
+ private void Throw()
+ {
+ float rotationY = transform.localEulerAngles.y;
+ Vector2 throwDirection = rotationY >= 180f ? Vector2.right : Vector2.left;
+ Collider2D enemyCol = GetComponent();
+ Vector2 throwPosition = new(1.4f * throwDirection.x + transform.position.x, enemyCol.bounds.center.y);
+
+ projectile = Instantiate(projectilePrefab, throwPosition, Quaternion.identity);
+ projectile.maxLifetime = projectileLifetime;
+
+ Collider2D projectileCol = projectile.GetComponent();
+
+ projectile.transform.localRotation = throwDirection.x < 0 ? Quaternion.Inverse(projectile.transform.localRotation) : projectile.transform.localRotation;
+
+ projectile.transform.position = throwPosition;
+ projectile.Launch(throwDirection, throwSpeed);
+
+ if (enemyCol && projectileCol) Physics2D.IgnoreCollision(enemyCol, projectileCol, true);
+
+ lastThrowTime = Time.time;
+ }
}
-
-
- private void Throw()
- {
- float rotationX = transform.localRotation.x;
- Vector2 throwDirection = rotationX >= 180 ? Vector2.right : Vector2.left;
- Collider2D enemyCol = GetComponent();
- Vector2 throwPosition = new (1.4f * throwDirection.x + transform.position.x, enemyCol.bounds.center.y);
-
- projectile = Instantiate(projectilePrefab, throwPosition, Quaternion.identity);
- projectile.maxLifetime = projectileLifetime;
-
- Collider2D projectileCol = projectile.GetComponent();
-
- projectile.transform.localRotation = throwDirection.x < 0 ? Quaternion.Inverse(projectile.transform.localRotation) : projectile.transform.localRotation;
-
- projectile.transform.position = throwPosition;
- projectile.Launch(throwDirection, throwSpeed);
-
- if (enemyCol && projectileCol) Physics2D.IgnoreCollision(enemyCol, projectileCol, true);
- }
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Behaviour/FireScript2D.cs b/Assets/Resources/Scripts/Behaviour/FireScript2D.cs
index 18b878d..b484b56 100644
--- a/Assets/Resources/Scripts/Behaviour/FireScript2D.cs
+++ b/Assets/Resources/Scripts/Behaviour/FireScript2D.cs
@@ -1,34 +1,38 @@
using UnityEngine;
+using RR.Game2D.Entities.Projectiles;
-public class FireScript2D : MonoBehaviour
-{
- [Header("Снаряды")]
- public BasicProjectile projectilePrefab;
- public Transform muzzle;
- public float shotSpeed = 20f;
- public KeyCode actionKey = KeyCode.F;
-
- void Update()
+namespace RR.Game2D.Behaviour
+{
+ public class FireScript2D : MonoBehaviour
{
- if (Input.GetKeyDown(actionKey))
+ [Header("Снаряды")]
+ public BasicProjectile projectilePrefab;
+ public Transform muzzle;
+ public float shotSpeed = 20f;
+ public KeyCode actionKey = KeyCode.F;
+
+ void Update()
{
- if (projectilePrefab == null) { Debug.LogWarning("No projectilePrefab"); return; }
+ if (Input.GetKeyDown(actionKey))
+ {
+ if (projectilePrefab == null) { Debug.LogWarning("No projectilePrefab"); return; }
- float sx = transform.localScale.x;
- float facing = Mathf.Sign(sx == 0 ? 1 : sx);
- Vector2 dir = facing > 0 ? Vector2.right : Vector2.left;
+ float sx = transform.localScale.x;
+ float facing = Mathf.Sign(sx == 0 ? 1 : sx);
+ Vector2 dir = facing > 0 ? Vector2.right : Vector2.left;
- Vector2 launchPos = muzzle
- ? (Vector2)muzzle.position
- : (Vector2)transform.position + new Vector2(1.4f * facing, 0f);
+ Vector2 launchPos = muzzle
+ ? (Vector2)muzzle.position
+ : (Vector2)transform.position + new Vector2(1.4f * facing, 0f);
- BasicProjectile projectile = Instantiate(projectilePrefab, launchPos, Quaternion.identity);
- projectile.transform.localScale = new Vector3(-facing * projectile.transform.localScale.x, projectile.transform.localScale.y, projectile.transform.localScale.z);
- projectile.Launch(dir, shotSpeed);
+ BasicProjectile projectile = Instantiate(projectilePrefab, launchPos, Quaternion.identity);
+ projectile.transform.localScale = new Vector3(-facing * projectile.transform.localScale.x, projectile.transform.localScale.y, projectile.transform.localScale.z);
+ projectile.Launch(dir, shotSpeed);
- var myCol = GetComponent();
- var pCol = projectile.GetComponent();
- if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
+ var myCol = GetComponent();
+ var pCol = projectile.GetComponent();
+ if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
+ }
}
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Behaviour/PlayerFireScript.cs b/Assets/Resources/Scripts/Behaviour/PlayerFireScript.cs
index b64f66a..7228c29 100644
--- a/Assets/Resources/Scripts/Behaviour/PlayerFireScript.cs
+++ b/Assets/Resources/Scripts/Behaviour/PlayerFireScript.cs
@@ -1,47 +1,56 @@
using UnityEngine;
+using RR.Game2D.Entities.Projectiles;
-public class PlayerFireScript : MonoBehaviour
+namespace RR.Game2D.Behaviour
{
- [Header("Снаряд")]
- [SerializeField] private PickableProjectile projectilePrefab;
- public bool spawnIfMissing = false;
-
- [Header("Бросок / Подбор")]
- [SerializeField] private KeyCode actionKey = KeyCode.F;
- [SerializeField] private float throwSpeed = 20f;
- public Transform attachPoint;
-
- private PickableProjectile pickableProjectile;
-
- void Awake()
+ public class PlayerFireScript : MonoBehaviour
{
- if (!attachPoint)
- Debug.LogWarning("PlayerFireScript: attachPoint не задан и HandPoint не найден. Будет использован корень игрока.");
- }
+ [Header("Снаряд")]
+ [SerializeField] private PickableProjectile projectilePrefab;
+ public bool spawnIfMissing = false;
- void Update()
- {
- if (!Input.GetKeyDown(actionKey)) return;
+ [Header("Бросок / Подбор")]
+ [SerializeField] private KeyCode actionKey = KeyCode.F;
+ [SerializeField] private float throwSpeed = 20f;
+ public Transform attachPoint;
- if (pickableProjectile == null)
- pickableProjectile = PickableProjectile.Instance;
+ private PickableProjectile pickableProjectile;
- if (pickableProjectile == null)
+ void Awake()
{
- if (!spawnIfMissing || projectilePrefab == null)
- {
- Debug.LogError("PlayerFireScript: projectile missing; enable spawnIfMissing and assign projectilePrefab.");
- return;
- }
-
- Vector3 spawnPos = attachPoint ? attachPoint.position : transform.position;
- pickableProjectile = Instantiate(projectilePrefab, spawnPos, Quaternion.identity);
- pickableProjectile.TryPickup(gameObject, attachPoint);
- return;
+ if (!attachPoint)
+ Debug.LogWarning("PlayerFireScript: attachPoint не задан. Будет использован корень игрока.");
}
- // Бросок
- if (pickableProjectile.CurrentState == PickableProjectile.State.Held && pickableProjectile.owner == gameObject)
+ void Update()
+ {
+ if (!Input.GetKeyDown(actionKey)) return;
+
+ if (pickableProjectile == null)
+ pickableProjectile = PickableProjectile.Instance;
+
+ if (pickableProjectile == null)
+ {
+ if (!spawnIfMissing || projectilePrefab == null)
+ {
+ Debug.LogError("PlayerFireScript: projectile missing; enable spawnIfMissing and assign projectilePrefab.");
+ return;
+ }
+
+ Vector3 spawnPos = attachPoint ? attachPoint.position : transform.position;
+ pickableProjectile = Instantiate(projectilePrefab, spawnPos, Quaternion.identity);
+ pickableProjectile.TryPickup(gameObject, attachPoint);
+ return;
+ }
+ // Бросок
+ if (pickableProjectile.CurrentState == PickableProjectile.State.Held && pickableProjectile.owner == gameObject) Throw();
+ }
+
+ ///
+ /// Метод для броска снаряда (выстрела).
+ /// У снаряда обязательно должен быть метод Launch(Vector2 direction)
+ ///
+ private void Throw()
{
float scaleX = transform.localScale.x;
float facing = Mathf.Sign(scaleX == 0 ? 1 : scaleX);
@@ -54,7 +63,11 @@ public class PlayerFireScript : MonoBehaviour
pickableProjectile.transform.position = launchPos;
pickableProjectile.Launch(direction, throwSpeed, gameObject);
}
- }
- public void BindProjectile(PickableProjectile proj) => pickableProjectile = proj;
+ ///
+ /// Метод для привязки снаряда к игроку.
+ ///
+ /// Снаряд
+ public void BindProjectile(PickableProjectile proj) => pickableProjectile = proj;
+ }
}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/CoinController.cs b/Assets/Resources/Scripts/CoinController.cs
deleted file mode 100644
index 6464303..0000000
--- a/Assets/Resources/Scripts/CoinController.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using UnityEngine;
-
-public class CoinController : MonoBehaviour
-{
- private void FixedUpdate()
- {
- transform.Rotate(new Vector3(0f, 5f, 0f));
- }
-}
diff --git a/Assets/Resources/Scripts/EnemyController.cs b/Assets/Resources/Scripts/EnemyController.cs
index 767d154..6613d49 100644
--- a/Assets/Resources/Scripts/EnemyController.cs
+++ b/Assets/Resources/Scripts/EnemyController.cs
@@ -1,137 +1,150 @@
using UnityEngine;
+using RR.Game2D.Core;
-[RequireComponent(typeof(Rigidbody2D))]
-public class EnemyController : MonoBehaviour
+namespace RR.Game2D.Behaviour
{
- public GameObject playerObj;
- public float viewDistance = 5f;
- public float viewAngle = 60f;
- public float moveSpeed = 4f;
- public float acceleration = 10f;
-
- [SerializeField] private LayerMask obstacleMask;
- private Animator animator;
- private Rigidbody2D rb;
- private Vector2 targetVelocity = Vector2.zero;
-
- void Start()
+ [RequireComponent(typeof(Rigidbody2D),
+ typeof(Collider2D),
+ typeof(Animator))]
+ public class EnemyController : MonoBehaviour
{
- rb = GetComponent();
- animator = GetComponent();
+ [Header("Обзор")]
+ [SerializeField] private float viewDistance = 5f;
+ [SerializeField] private float viewAngle = 60f;
- playerObj = GameManager.Instance.PlayerObj;
- if (playerObj == null)
+ [Header("Движение")]
+ [SerializeField] private float moveSpeed = 4f;
+ [SerializeField] private float acceleration = 10f;
+
+ [Header("Препятствия")]
+ [SerializeField] private LayerMask obstacleMask;
+
+ private Animator animator;
+ private Rigidbody2D rb;
+ private Collider2D col;
+
+ private GameObject playerObj;
+
+ void Start()
{
- playerObj = GameObject.FindGameObjectWithTag("Player");
+ rb = GetComponent();
+ col = GetComponent();
+ animator = GetComponent();
+
+ playerObj = GameManager.Instance.PlayerObj;
+ if (playerObj == null)
+ {
+ playerObj = GameObject.FindGameObjectWithTag("Player");
+ }
}
- }
- void FixedUpdate()
- {
- if (!playerObj) return;
-
- Vector2 playerCenter = (Vector2)playerObj.transform.position;
-
- if (PlayerInSight())
+ void FixedUpdate()
{
- Vector2 toPlayer = playerCenter - (Vector2)transform.position;
+ if (!playerObj) return;
+
+ Vector2 playerCenter = (Vector2)playerObj.transform.position;
+
+ if (PlayerInSight())
+ {
+ Vector2 toPlayer = playerCenter - (Vector2)transform.position;
+ float dist = toPlayer.magnitude;
+
+ if (dist > 0.01f)
+ rb.linearVelocity = toPlayer / dist * moveSpeed;
+ else
+ rb.linearVelocity = Vector2.zero;
+ }
+ else
+ {
+ rb.linearVelocity = Vector2.MoveTowards(
+ rb.linearVelocity, Vector2.zero, acceleration * Time.fixedDeltaTime);
+ }
+
+ animator.SetFloat("Speed", Mathf.Abs(rb.linearVelocity.magnitude));
+ }
+
+ void OnCollisionEnter2D(Collision2D collision)
+ {
+ if (collision.collider.CompareTag("Player"))
+ {
+ Rigidbody2D playerRb = collision.collider.GetComponent();
+ PlayerController playerController = playerObj.GetComponent();
+ if (playerRb == null) return;
+
+ Vector2 contactNormal = collision.GetContact(0).normal;
+
+ if (contactNormal.y < -0.5f)
+ {
+ playerRb.linearVelocity = new Vector2(playerRb.linearVelocity.x, 35f);
+ Die();
+ }
+ else
+ {
+ playerController.Die();
+ }
+ }
+ else if (collision.collider.CompareTag("Projectile")) Die();
+ }
+
+ private bool PlayerInSight()
+ {
+ if (!playerObj) return false;
+
+ Transform player = playerObj.transform;
+
+ Vector2 eyePos = new(rb.position.x, col.bounds.center.y);
+
+ Vector2 toPlayer = (Vector2)player.position - eyePos;
float dist = toPlayer.magnitude;
+ if (dist > viewDistance) return false;
- if (dist > 0.01f)
- rb.linearVelocity = toPlayer / dist * moveSpeed;
- else
- rb.linearVelocity = Vector2.zero;
+ Vector2 forward = transform.localEulerAngles.y >= 180f ? Vector2.right : Vector2.left;
+
+ float cosHalf = Mathf.Cos(0.5f * viewAngle * Mathf.Deg2Rad);
+ float dot = Vector2.Dot(forward.normalized, toPlayer / Mathf.Max(dist, 1e-6f));
+ if (dot < cosHalf) return false;
+
+ int mask = obstacleMask;
+ mask &= ~(1 << gameObject.layer);
+ mask &= ~(1 << playerObj.layer);
+
+ Vector2 origin = eyePos + forward.normalized * 0.05f;
+
+ RaycastHit2D hit = Physics2D.Raycast(origin, toPlayer.normalized, dist, mask);
+ if (hit.collider != null) return false;
+
+ return true;
}
- else
+
+ public void Die()
{
- rb.linearVelocity = Vector2.MoveTowards(
- rb.linearVelocity, Vector2.zero, acceleration * Time.fixedDeltaTime);
+ Destroy(gameObject);
}
- animator.SetFloat("Speed", Mathf.Abs(rb.linearVelocity.magnitude));
- }
-
- void OnCollisionEnter2D(Collision2D collision)
- {
- if (collision.collider.CompareTag("Player"))
- {
- Rigidbody2D playerRb = collision.collider.GetComponent();
- PlayerController playerController = playerObj.GetComponent();
- if (playerRb == null) return;
-
- Vector2 contactNormal = collision.GetContact(0).normal;
-
- if (contactNormal.y < -0.5f)
- {
- playerRb.linearVelocity = new Vector2(playerRb.linearVelocity.x, 35f);
- Die();
- }
- else
- {
- playerController.Die();
- }
- }
- else if (collision.collider.CompareTag("Projectile")) Die();
- }
-
- private bool PlayerInSight()
- {
- if (!playerObj) return false;
-
- Transform player = playerObj.transform;
-
- Vector2 eyePos = new(rb.position.x, rb.position.y + 1.45f);
-
- Vector2 toPlayer = (Vector2)player.position - eyePos;
- float dist = toPlayer.magnitude;
- if (dist > viewDistance) return false;
-
- Vector2 forward = (Vector2)transform.right;
-
- float cosHalf = Mathf.Cos(0.5f * viewAngle * Mathf.Deg2Rad);
- float dot = Vector2.Dot(forward.normalized, toPlayer / Mathf.Max(dist, 1e-6f));
- if (dot < cosHalf) return false;
-
- int mask = obstacleMask;
- mask &= ~(1 << gameObject.layer);
- mask &= ~(1 << playerObj.layer);
-
- Vector2 origin = eyePos + forward.normalized * 0.05f;
-
- RaycastHit2D hit = Physics2D.Raycast(origin, toPlayer.normalized, dist, mask);
- if (hit.collider != null) return false;
-
- return true;
- }
-
- public void Die()
- {
- Destroy(gameObject);
- }
-
#if UNITY_EDITOR
- private void OnDrawGizmos()
-{
- if (!playerObj) return;
+ private void OnDrawGizmos()
+ {
+ if (!playerObj) return;
- Vector2 origin = new(rb.position.x, rb.position.y + 1.45f);
- Vector2 forward = (Vector2)transform.right;
- float half = viewAngle * 0.5f;
+ Vector2 origin = new(rb.position.x, rb.position.y + 1.45f);
+ Vector2 forward = transform.localEulerAngles.y >= 180f ? Vector2.right : Vector2.left;
+ float half = viewAngle * 0.5f;
- Vector2 edgeA = (Vector2)(Quaternion.Euler(0, 0, +half) * (Vector3)forward);
- Vector2 edgeB = (Vector2)(Quaternion.Euler(0, 0, -half) * (Vector3)forward);
+ Vector2 edgeA = (Vector2)(Quaternion.Euler(0, 0, +half) * (Vector3)forward);
+ Vector2 edgeB = (Vector2)(Quaternion.Euler(0, 0, -half) * (Vector3)forward);
- Gizmos.color = Color.yellow;
- Gizmos.DrawLine(origin, origin + edgeA * viewDistance);
- Gizmos.DrawLine(origin, origin + edgeB * viewDistance);
- Gizmos.DrawWireSphere(origin, viewDistance);
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawLine(origin, origin + edgeA * viewDistance);
+ Gizmos.DrawLine(origin, origin + edgeB * viewDistance);
+ Gizmos.DrawWireSphere(origin, viewDistance);
- Vector2 toPlayer = (Vector2)playerObj.transform.position - origin;
- if (toPlayer.magnitude <= viewDistance)
- {
- Gizmos.color = Color.red;
- Gizmos.DrawLine(origin, playerObj.transform.position);
- }
-}
+ Vector2 toPlayer = (Vector2)playerObj.transform.position - origin;
+ if (toPlayer.magnitude <= viewDistance)
+ {
+ Gizmos.color = Color.red;
+ Gizmos.DrawLine(origin, playerObj.transform.position);
+ }
+ }
#endif
-}
+ }
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/GameManager.cs b/Assets/Resources/Scripts/GameManager.cs
index 0ed9a37..d344430 100644
--- a/Assets/Resources/Scripts/GameManager.cs
+++ b/Assets/Resources/Scripts/GameManager.cs
@@ -3,272 +3,304 @@ using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
-[DefaultExecutionOrder(-1000)]
-public class GameManager : MonoBehaviour
+namespace RR.Game2D.Core
{
- public static GameManager Instance { get; private set; }
-
- [Header("Пауза")]
- public bool IsPaused { get; private set; }
- public event Action PauseStateChanged;
-
- [Header("Информация для игры")]
- public int World { get; private set; } = 1;
- public int Stage { get; private set; } = 1;
- public int StagesByWorld { get; private set; } = 5;
- public int Lives { get; private set; } = 3;
- public int Coins { get; private set; } = 0;
-
- [Header("Игрок")]
- [SerializeField] private GameObject playerPrefab;
- [SerializeField] private string playerPrefabResourcePath = "Prefabs/Player";
- public GameObject PlayerObj { get; private set; }
- private bool _shouldSpawnPlayer;
-
- private void OnEnable() => SceneManager.sceneLoaded += OnSceneLoaded;
- private void OnDisable() => SceneManager.sceneLoaded -= OnSceneLoaded;
-
- public event Action PlayerSpawned;
-
- public event Action CoinsChanged;
-
- //---------------------------
- // Singleton
- //---------------------------
- [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
- private static void Bootstrap()
+ [DefaultExecutionOrder(-1000)]
+ public class GameManager : MonoBehaviour
{
- if (Instance == null)
- {
- var go = new GameObject(nameof(GameManager));
- Instance = go.AddComponent();
- DontDestroyOnLoad(go);
- }
- }
+ public static GameManager Instance { get; private set; }
- private void Awake()
- {
- if (Instance != null && Instance != this)
+ [Header("Пауза")]
+ public bool IsPaused { get; private set; }
+ public event Action PauseStateChanged;
+
+ [Header("Информация для игры")]
+ public int World { get; private set; } = 1;
+ public int Stage { get; private set; } = 1;
+ public int StagesByWorld { get; private set; } = 5;
+ public int Lives { get; private set; } = 3;
+ public int Coins { get; private set; } = 0;
+
+ [Header("Игрок")]
+ [SerializeField] private GameObject playerPrefab;
+ [SerializeField] private string playerPrefabResourcePath = "Prefabs/Player";
+ public GameObject PlayerObj { get; private set; }
+ private bool _shouldSpawnPlayer;
+
+ private void OnEnable() => SceneManager.sceneLoaded += OnSceneLoaded;
+ private void OnDisable() => SceneManager.sceneLoaded -= OnSceneLoaded;
+
+ public event Action PlayerSpawned;
+
+ public event Action CoinsChanged;
+
+ //---------------------------
+ // Singleton
+ //---------------------------
+ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
+ private static void Bootstrap()
{
- Destroy(gameObject);
- return;
+ if (Instance == null)
+ {
+ var go = new GameObject(nameof(GameManager));
+ Instance = go.AddComponent();
+ DontDestroyOnLoad(go);
+ }
}
- Instance = this;
- DontDestroyOnLoad(gameObject);
- }
-
- private void OnDestroy()
- {
- if (Instance == this) Instance = null;
- }
- //---------------------------
- //
- //---------------------------
-
- //private void Start()
- //{
- // //Application.targetFrameRate = 60;
- // //LoadScene("MainMenu", false);
- // //NewGame();
- // if (SceneManager.GetActiveScene().name != "MainMenu")
- // {
- // TrySpawnPlayerForActiveScene();
- // }
- //}
-
- ///
- /// Поиск префаба игрока.
- /// Если не найдет префаб из инспектора, ищет в "Resources"
- ///
- /// Префаб игрока
- private GameObject ResolvePlayerPrefab()
- {
- if (playerPrefab != null) return playerPrefab;
-
- var loaded = Resources.Load(playerPrefabResourcePath);
- if (loaded == null)
+ private void Awake()
{
- Debug.LogError(
- $"GameManager: playerPrefab is null. Resources.Load('{playerPrefabResourcePath}') вернул null. " +
- $"Ожидается файл: Assets/Resources/{playerPrefabResourcePath}.prefab (точное совпадение регистра).");
- }
- return loaded;
- }
+ if (Instance != null && Instance != this)
+ {
+ Destroy(gameObject);
+ return;
+ }
- ///
- /// Начало новой игры.
- /// Загружает первый уровень.
- /// Устанавливает жизни на 3, монеты на 0
- ///
- public void NewGame()
- {
- Lives = 3;
- Coins = 0;
- CoinsChanged?.Invoke(Coins);
- LoadLevel(1, 1);
- }
+ Instance = this;
+ DontDestroyOnLoad(gameObject);
- ///
- /// Окончание игры.
- /// Загружает сцену главного меню
- ///
- public void GameOver() => LoadScene("MainMenu", false);
-
- ///
- /// Загрузка уровня по данным.
- /// Загружает уровень по номерам мира и уровня
- ///
- /// Номер мира
- /// Номер уровня
- public void LoadLevel(int world, int stage)
- {
- this.World = world;
- this.Stage = stage;
-
- string sceneName = $"{world}-{stage}";
- if (SceneInBuildSettingsExists(sceneName))
- {
- LoadScene(sceneName);
- }
- else
- {
- print("WIN");
- //NewGame();
- LoadScene("MainMenu", false);
- }
- }
-
- ///
- /// Загрузка сцены по названию.
- /// Вызывает одноименный метод в SceneManager.
- /// Может загружать сцены с UI и без.
- /// В сценах без UI игрок не спавнится
- ///
- /// Строковое название сцены
- /// Использовать ли UI
- public void LoadScene(string sceneName, bool useUI = true)
- {
- _shouldSpawnPlayer = true;
-
- SceneManager.LoadScene(sceneName);
-
- if (useUI)
- {
- SceneManager.LoadScene("Level UI", LoadSceneMode.Additive);
+ if (SceneManager.GetActiveScene().name != "MainMenu") _shouldSpawnPlayer = true;
}
- else _shouldSpawnPlayer = false;
- }
-
- private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
- {
- TrySpawnPlayerForActiveScene();
- }
-
- ///
- /// Метод для спавна игрока.
- /// Ищет первый спавнпоинт, спавнит игрока на его позиции.
- /// Если на карте есть объект игрока, удаляет его и спавнит свой
- ///
- private void TrySpawnPlayerForActiveScene()
- {
- if (!_shouldSpawnPlayer) return;
- PlayerSpawn spawn = FindFirstObjectByType();
- Vector3 pos = spawn ? spawn.transform.position : new Vector3(0, 1.3f, 0);
- Quaternion rot = spawn ? spawn.transform.rotation : Quaternion.identity;
-
- PlayerObj = GameObject.FindGameObjectWithTag("Player");
- if (PlayerObj != null) Destroy(PlayerObj);
-
- var prefab = ResolvePlayerPrefab();
- if (prefab == null) return;
-
- PlayerObj = Instantiate(prefab, pos, rot);
- SceneManager.MoveGameObjectToScene(PlayerObj, SceneManager.GetActiveScene());
-
- PlayerSpawned?.Invoke(PlayerObj);
- }
-
-
- ///
- /// Метод переход на следующий уровень.
- /// Может загружать уровни и миры в прямой зависимости от
- /// Количества уровней на мир(StagesByWorld)
- ///
- public void NextLevel()
- {
- if (Stage >= StagesByWorld) LoadLevel(World + 1, 1);
- else LoadLevel(World, Stage + 1);
- }
-
- ///
- /// Метод сброса уровня.
- /// При сбросе также сбрасывает монеты и отнимает жизни
- ///
- public void ResetLevel()
- {
- Lives--;
-
- Coins = 0;
- CoinsChanged?.Invoke(Coins);
-
- //print($"Lives: {lives}");
- if (Lives > 0) LoadLevel(World, Stage);
- else GameOver();
- }
-
- ///
- /// Метод добавления монеты
- ///
- public void AddCoin()
- {
- Coins++;
- if (Coins >= 100)
+ private void OnDestroy()
{
+ if (Instance == this) Instance = null;
+ }
+ //---------------------------
+ //
+ //---------------------------
+
+ //private void Start()
+ //{
+ // //Application.targetFrameRate = 60;
+ // //LoadScene("MainMenu", false);
+ // //NewGame();
+ // if (SceneManager.GetActiveScene().name != "MainMenu")
+ // {
+ // TrySpawnPlayerForActiveScene();
+ // }
+ //}
+
+ ///
+ /// Поиск префаба игрока.
+ /// Если не найдет префаб из инспектора, ищет в "Resources"
+ ///
+ /// Префаб игрока
+ private GameObject ResolvePlayerPrefab()
+ {
+ if (playerPrefab != null) return playerPrefab;
+
+ var loaded = Resources.Load(playerPrefabResourcePath);
+ if (loaded == null)
+ {
+ Debug.LogError(
+ $"GameManager: playerPrefab is null. Resources.Load('{playerPrefabResourcePath}') вернул null. " +
+ $"Ожидается файл: Assets/Resources/{playerPrefabResourcePath}.prefab (точное совпадение регистра).");
+ }
+ return loaded;
+ }
+
+ ///
+ /// Начало новой игры.
+ /// Загружает первый уровень.
+ /// Устанавливает жизни на 3, монеты на 0
+ ///
+ public void NewGame()
+ {
+ Lives = 3;
Coins = 0;
- AddLife();
+ CoinsChanged?.Invoke(Coins);
+ LoadLevel(1, 1);
}
- CoinsChanged?.Invoke(Coins);
- }
- ///
- /// Метод паузы игры.
- /// Ставит на паузу все SFX и саму игру
- ///
- /// Ставить ли на паузу
- public void SetPause(bool pause)
- {
- if (IsPaused == pause) return;
- IsPaused = pause;
+ // Можно заменить на другое поведение
+ ///
+ /// Окончание игры.
+ /// Загружает сцену главного меню
+ ///
+ public void GameOver() => LoadScene("MainMenu", false);
+ // --
- Time.timeScale = pause ? 0f : 1f;
- AudioListener.pause = pause;
-
- PauseStateChanged?.Invoke(IsPaused);
- }
-
- ///
- /// Метод переключателя паузы
- ///
- public void TogglePause() => SetPause(!IsPaused);
-
- public void AddLife() => Lives++;
-
- ///
- /// Метод проверки сцены на существование в настройках билда
- ///
- /// Строковое название сцены
- ///
- private static bool SceneInBuildSettingsExists(string sceneName)
- {
- int count = SceneManager.sceneCountInBuildSettings;
- for (int i = 0; i < count; i++)
+ ///
+ /// Загрузка уровня по данным.
+ /// Загружает уровень по номерам мира и уровня
+ ///
+ /// Номер мира
+ /// Номер уровня
+ public void LoadLevel(int world, int stage)
{
- string path = SceneUtility.GetScenePathByBuildIndex(i);
- if (Path.GetFileNameWithoutExtension(path) == sceneName)
- return true;
+ this.World = world;
+ this.Stage = stage;
+
+ string sceneName = $"{world}-{stage}";
+ if (SceneInBuildSettingsExists(sceneName))
+ {
+ LoadScene(sceneName);
+ }
+ else
+ {
+ //NewGame();
+ // Можно заменить на другое поведение
+ print("WIN");
+ LoadScene("MainMenu", false);
+ // --
+ }
+ }
+
+ ///
+ /// Загрузка сцены по названию.
+ /// Вызывает одноименный метод в SceneManager.
+ /// Может загружать сцены с UI и без.
+ /// В сценах без UI игрок не спавнится
+ ///
+ /// Строковое название сцены
+ /// Использовать ли UI
+ public void LoadScene(string sceneName, bool useUI = true)
+ {
+ _shouldSpawnPlayer = true;
+
+ SceneManager.LoadScene(sceneName);
+
+ if (useUI)
+ {
+ SceneManager.LoadScene("Level UI", LoadSceneMode.Additive);
+ }
+
+ else _shouldSpawnPlayer = false;
+ }
+
+ private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
+ {
+ string currentSceneName = SceneManager.GetActiveScene().name;
+
+ TrySpawnPlayerForActiveScene();
+
+ if (currentSceneName != $"{World}-{Stage}" && currentSceneName.Contains("-"))
+ {
+ string[] levelInfo = currentSceneName.Split("-");
+ World = Convert.ToInt32(levelInfo[0]);
+ World = Convert.ToInt32(levelInfo[1]);
+ }
+ }
+
+ ///
+ /// Метод для спавна игрока.
+ /// Ищет первый спавнпоинт, спавнит игрока на его позиции.
+ /// Если на карте есть объект игрока, удаляет его и спавнит свой
+ ///
+ private void TrySpawnPlayerForActiveScene()
+ {
+ if (!_shouldSpawnPlayer) return;
+ PlayerSpawn spawn = FindFirstObjectByType();
+ Vector3 pos = spawn ? spawn.transform.position : new Vector3(0, 1.3f, 0);
+ Quaternion rot = spawn ? spawn.transform.rotation : Quaternion.identity;
+
+ PlayerObj = GameObject.FindGameObjectWithTag("Player");
+ if (PlayerObj != null) Destroy(PlayerObj);
+
+ var prefab = ResolvePlayerPrefab();
+ if (prefab == null) return;
+
+ PlayerObj = Instantiate(prefab, pos, rot);
+ SceneManager.MoveGameObjectToScene(PlayerObj, SceneManager.GetActiveScene());
+
+ PlayerSpawned?.Invoke(PlayerObj);
+ }
+
+
+ ///
+ /// Метод переход на следующий уровень.
+ /// Может загружать уровни и миры в прямой зависимости от
+ /// Количества уровней на мир(StagesByWorld)
+ ///
+ public void NextLevel()
+ {
+ if (Stage >= StagesByWorld)
+ {
+ World++;
+ Stage = 1;
+ }
+ else Stage++;
+ LoadLevel(World, Stage);
+ }
+
+ ///
+ /// Метод сброса уровня.
+ /// При сбросе также сбрасывает монеты и отнимает жизни
+ ///
+ public void ResetLevel()
+ {
+ Lives--;
+
+ Coins = 0;
+ CoinsChanged?.Invoke(Coins);
+
+ //print($"Lives: {lives}");
+ if (Lives > 0) LoadLevel(World, Stage);
+ else GameOver();
+ }
+
+ ///
+ /// Метод добавления монеты
+ ///
+ public void AddCoin()
+ {
+ Coins++;
+ // Можно заменить на другое поведение
+ if (Coins >= 100)
+ {
+ Coins = 0;
+ AddLife();
+ }
+ // --
+ CoinsChanged?.Invoke(Coins);
+ }
+
+ ///
+ /// Метод паузы игры.
+ /// Ставит на паузу все SFX и саму игру
+ ///
+ /// Ставить ли на паузу
+ public void SetPause(bool pause)
+ {
+ if (IsPaused == pause) return;
+ IsPaused = pause;
+
+ Time.timeScale = pause ? 0f : 1f;
+ AudioListener.pause = pause;
+
+ PauseStateChanged?.Invoke(IsPaused);
+ }
+
+ // Можно заменить на другое поведение
+ ///
+ /// Метод переключателя паузы
+ ///
+ public void TogglePause() => SetPause(!IsPaused);
+ // --
+
+ // Можно заменить на другое поведение
+ ///
+ /// Метод для добавления жизни.
+ ///
+ public void AddLife() => Lives++;
+ // --
+
+ ///
+ /// Метод проверки сцены на существование в настройках билда
+ ///
+ /// Строковое название сцены
+ ///
+ private static bool SceneInBuildSettingsExists(string sceneName)
+ {
+ int count = SceneManager.sceneCountInBuildSettings;
+ for (int i = 0; i < count; i++)
+ {
+ string path = SceneUtility.GetScenePathByBuildIndex(i);
+ if (Path.GetFileNameWithoutExtension(path) == sceneName)
+ return true;
+ }
+ return false;
}
- return false;
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/MainMenu.cs b/Assets/Resources/Scripts/MainMenu.cs
index fdc60ce..3c0f754 100644
--- a/Assets/Resources/Scripts/MainMenu.cs
+++ b/Assets/Resources/Scripts/MainMenu.cs
@@ -1,46 +1,50 @@
using UnityEngine;
using UnityEngine.UI;
+using RR.Game2D.Core;
-public class MainMenu : MonoBehaviour
+namespace RR.Common.UI
{
- [Header("Кнопки")]
- [SerializeField] private Button newGameButton;
- [SerializeField] private Button quitButton;
-
- //private void Awake()
- //{
- // Bootstrap();
- //}
-
- private void Start()
+ public class MainMenu : MonoBehaviour
{
- Bootstrap();
- }
+ [Header("Кнопки")]
+ [SerializeField] private Button newGameButton;
+ [SerializeField] private Button quitButton;
- ///
- /// Метод для загрузки элементов сцены.
- /// Вешает события на кнопки
- ///
- public void Bootstrap()
- {
- if (newGameButton) newGameButton.onClick.AddListener(OnNewGame);
- if (quitButton) quitButton.onClick.AddListener(OnQuit);
- }
+ //private void Awake()
+ //{
+ // Bootstrap();
+ //}
- ///
- /// Метод начала новой игры
- ///
- private void OnNewGame()
- {
+ private void Start()
+ {
+ Bootstrap();
+ }
- GameManager.Instance.NewGame();
- }
+ ///
+ /// Метод для загрузки элементов сцены.
+ /// Вешает события на кнопки
+ ///
+ public void Bootstrap()
+ {
+ if (newGameButton) newGameButton.onClick.AddListener(OnNewGame);
+ if (quitButton) quitButton.onClick.AddListener(OnQuit);
+ }
- ///
- /// Метод выхода из игры
- ///
- private void OnQuit()
- {
- Application.Quit();
+ ///
+ /// Метод начала новой игры
+ ///
+ private void OnNewGame()
+ {
+
+ GameManager.Instance.NewGame();
+ }
+
+ ///
+ /// Метод выхода из игры
+ ///
+ private void OnQuit()
+ {
+ Application.Quit();
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/PauseMenu.cs b/Assets/Resources/Scripts/PauseMenu.cs
index f3fe0bc..ffbda03 100644
--- a/Assets/Resources/Scripts/PauseMenu.cs
+++ b/Assets/Resources/Scripts/PauseMenu.cs
@@ -4,96 +4,121 @@ using System.Collections;
#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
#endif
+using RR.Game2D.Core;
-public class PauseMenu : MonoBehaviour
+namespace RR.Common.UI
{
- [Header("UI")]
- [SerializeField] private CanvasGroup panel;
- [SerializeField] private Button resumeButton;
- [SerializeField] private Button quitButton;
- //[SerializeField] private Button restartButton;
- //[SerializeField] private KeyCode toggleKey = KeyCode.Escape; // Esc
-
- private void Awake()
+ public class PauseMenu : MonoBehaviour
{
- if (resumeButton) resumeButton.onClick.AddListener(OnResumeClicked);
- if (quitButton) quitButton.onClick.AddListener(OnQuitClicked);
- //if (restartButton) restartButton.onClick.AddListener(OnRestartClicked);
+ [Header("UI")]
+ [SerializeField] private CanvasGroup panel;
+ [SerializeField] private Button resumeButton;
+ [SerializeField] private Button quitButton;
+ //[SerializeField] private Button restartButton;
+ //[SerializeField] private KeyCode toggleKey = KeyCode.Escape; // Esc
- // Изначально скрыто
- SetVisible(false, instant: true);
- }
+ private void Awake()
+ {
+ if (resumeButton) resumeButton.onClick.AddListener(OnResumeClicked);
+ if (quitButton) quitButton.onClick.AddListener(OnQuitClicked);
+ //if (restartButton) restartButton.onClick.AddListener(OnRestartClicked);
- private void OnEnable()
- {
- if (GameManager.Instance != null)
- GameManager.Instance.PauseStateChanged += HandlePauseChanged;
- }
+ // Изначально скрыто
+ SetVisible(false, instant: true);
+ }
- private void OnDisable()
- {
- if (GameManager.Instance != null)
- GameManager.Instance.PauseStateChanged -= HandlePauseChanged;
- }
+ private void OnEnable()
+ {
+ if (GameManager.Instance != null)
+ GameManager.Instance.PauseStateChanged += HandlePauseChanged;
+ }
- private void Update()
- {
+ private void OnDisable()
+ {
+ if (GameManager.Instance != null)
+ GameManager.Instance.PauseStateChanged -= HandlePauseChanged;
+ }
+
+ private void Update()
+ {
#if ENABLE_INPUT_SYSTEM
- if (Keyboard.current != null && Keyboard.current.escapeKey.wasPressedThisFrame)
- GameManager.Instance.TogglePause();
+ if (Keyboard.current != null && Keyboard.current.escapeKey.wasPressedThisFrame)
+ GameManager.Instance.TogglePause();
#else
if (Input.GetKeyDown(toggleKey))
GameManager.Instance.TogglePause();
#endif
- }
-
- private void HandlePauseChanged(bool paused)
- {
- SetVisible(paused);
- }
-
- private void SetVisible(bool visible, bool instant = false)
- {
- if (!panel) return;
-
- panel.interactable = visible;
- panel.blocksRaycasts = visible;
-
- if (instant)
- {
- panel.alpha = visible ? 1f : 0f;
}
- else
+
+ ///
+ /// Обработка события паузы
+ ///
+ /// Ставить ли на паузу
+ private void HandlePauseChanged(bool paused)
{
- StopAllCoroutines();
- StartCoroutine(Fade(panel, visible ? 1f : 0f, 0.15f));
+ SetVisible(paused);
+ }
+
+ ///
+ /// Метод для изменения отображения
+ ///
+ /// Отображать ли менб пайзы
+ /// Постоянно или нет
+ private void SetVisible(bool visible, bool instant = false)
+ {
+ if (!panel) return;
+
+ panel.interactable = visible;
+ panel.blocksRaycasts = visible;
+
+ if (instant)
+ {
+ panel.alpha = visible ? 1f : 0f;
+ }
+ else
+ {
+ StopAllCoroutines();
+ StartCoroutine(Fade(panel, visible ? 1f : 0f, 0.15f));
+ }
+ }
+
+ ///
+ /// Метод для плавного изменения видимости
+ ///
+ /// Группа холстов
+ /// Целевое значение альфа-канала
+ /// Продолжительность перехода
+ private IEnumerator Fade(CanvasGroup cg, float target, float duration)
+ {
+ float start = cg.alpha;
+ float t = 0f;
+ while (t < duration)
+ {
+ t += Time.unscaledDeltaTime;
+ cg.alpha = Mathf.Lerp(start, target, t / duration);
+ yield return null;
+ }
+ cg.alpha = target;
+ }
+
+ ///
+ /// Метод для возобновления игры
+ ///
+ public void OnResumeClicked() => GameManager.Instance.SetPause(false);
+
+ //public void OnRestartClicked()
+ //{
+ // GameManager.Instance.SetPause(false);
+ // GameManager.Instance.ResetLevel();
+ //}
+
+ ///
+ /// Метод для выхода в главное меню
+ ///
+ public void OnQuitClicked()
+ {
+ GameManager.Instance.SetPause(false);
+ GameManager.Instance.LoadScene("MainMenu", false);
}
}
-
- private IEnumerator Fade(CanvasGroup cg, float target, float duration)
- {
- float start = cg.alpha;
- float t = 0f;
- while (t < duration)
- {
- t += Time.unscaledDeltaTime;
- cg.alpha = Mathf.Lerp(start, target, t / duration);
- yield return null;
- }
- cg.alpha = target;
- }
-
- public void OnResumeClicked() => GameManager.Instance.SetPause(false);
-
- //public void OnRestartClicked()
- //{
- // GameManager.Instance.SetPause(false);
- // GameManager.Instance.ResetLevel();
- //}
-
- public void OnQuitClicked()
- {
- GameManager.Instance.SetPause(false);
- GameManager.Instance.LoadScene("MainMenu", false);
- }
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/PlayerController.cs b/Assets/Resources/Scripts/PlayerController.cs
index a136428..e91edc7 100644
--- a/Assets/Resources/Scripts/PlayerController.cs
+++ b/Assets/Resources/Scripts/PlayerController.cs
@@ -1,130 +1,155 @@
using UnityEngine;
+using RR.Game2D.Core;
-[DisallowMultipleComponent]
-[RequireComponent(typeof(Rigidbody2D), typeof(Collider2D))]
-public class PlayerController : MonoBehaviour
+namespace RR.Game2D.Behaviour
{
-
- [Header("Горизонтальное движение")]
- public float moveSpeed = 8f;
- public float accel = 40f;
- public float decel = 20f;
-
- [Header("Вертикальное движение")]
- public float maxJumpHeight = 5f;
- public float jumpCooldown = 0.1f;
- public float jumpBuffer = 0.1f;
- [Range(0f, 1f)] public float jumpCut = 0.5f;
-
- private float spriteScale = 0.35f;
-
- private Rigidbody2D rb;
- private Collider2D col;
-
- float inputX;
- float lastGroundedTime;
- float lastJumpPressedTime;
-
- bool IsGrounded => Grounded();
-
- [Header("Аниматор [Опционально]")]
- [SerializeField] private Animator animator; // оставить в инспекторе на всякий случай
-
- void Awake()
+ [DisallowMultipleComponent]
+ [RequireComponent(typeof(Rigidbody2D),
+ typeof(Collider2D),
+ typeof(Animator))]
+ public class PlayerController : MonoBehaviour
{
- rb = GetComponent();
- col = GetComponent();
- rb.freezeRotation = true;
- lastJumpPressedTime = -999f;
- // если не задано в инспекторе — находим автоматически
- if (animator == null)
- animator = GetComponent();
- if (animator == null)
- animator = GetComponentInChildren(true);
+ [Header("Горизонтальное движение")]
+ [SerializeField] private float moveSpeed = 8f;
+ [SerializeField] private float accel = 40f;
+ [SerializeField] private float decel = 20f;
- if (animator == null)
- Debug.LogError($"[{name}] Animator не найден!");
- }
+ [Header("Вертикальное движение")]
+ [SerializeField] private float maxJumpHeight = 5f;
+ [SerializeField] private float jumpCooldown = 0.1f;
+ [SerializeField] private float jumpBuffer = 0.1f;
+ [SerializeField, Range(0f, 1f)] private float jumpCut = 0.5f;
- void Update()
- {
- inputX = Input.GetAxisRaw("Horizontal");
+ private float spriteScale = 0.35f;
- if (Input.GetButtonDown("Jump"))
- lastJumpPressedTime = Time.time;
+ private Rigidbody2D rb;
+ private Collider2D col;
- if (Input.GetButtonUp("Jump")) // && rb.linearVelocity.y > 0f)
- rb.linearVelocity = new Vector2(rb.linearVelocity.x, rb.linearVelocity.y * jumpCut);
+ float inputX;
+ float lastGroundedTime;
+ float lastJumpPressedTime;
- if (inputX != 0f)
- transform.localScale = new Vector3(Mathf.Sign(inputX) * spriteScale, spriteScale, spriteScale);
+ bool IsGrounded => Grounded();
- if (IsGrounded) lastGroundedTime = Time.time;
+ [Header("Аниматор [Опционально]")]
+ [SerializeField] private Animator animator; // оставить в инспекторе на всякий случай
- animator.SetFloat("Speed", Mathf.Abs(rb.linearVelocity.x));
- animator.SetFloat("VSpeed", rb.linearVelocity.y);
- animator.SetBool("Grounded", IsGrounded);
- }
-
-
-
- void FixedUpdate()
- {
- float target = inputX * moveSpeed;
- float rate = (Mathf.Abs(target) > 0.01f) ? accel : decel;
- float vx = Mathf.MoveTowards(rb.linearVelocity.x, target, rate * Time.fixedDeltaTime);
-
- if (transform.position.y < -5) Die();
-
- bool canJump = (Time.time - lastGroundedTime) <= jumpCooldown;
- bool wantJump = (Time.time - lastJumpPressedTime) <= jumpBuffer;
-
- if (wantJump && canJump && IsGrounded)
+ void Awake()
{
- float vy = CalcJumpSpeed(maxJumpHeight);
- rb.linearVelocity = new Vector2(vx, vy);
- animator.SetBool("Jump", true);
+ rb = GetComponent();
+ col = GetComponent();
+ rb.freezeRotation = true;
lastJumpPressedTime = -999f;
- return;
+
+ // если не задано в инспекторе — находим автоматически
+ if (animator == null)
+ animator = GetComponent();
+ if (animator == null)
+ animator = GetComponentInChildren(true);
+
+ if (animator == null)
+ Debug.LogError($"[{name}] Animator не найден!");
}
- rb.linearVelocity = new Vector2(vx, rb.linearVelocity.y);
- }
-
- float CalcJumpSpeed(float height)
- {
- float g = Physics2D.gravity.y * rb.gravityScale;
-
- return Mathf.Sqrt(-2f * g * height);
- }
-
- bool Grounded()
- {
- RaycastHit2D hit = Physics2D.CircleCast(new Vector2(col.bounds.center.x, col.bounds.min.y), 0.01f, Vector2.down, 0.1f);
- bool isGrounded = hit.collider != null;
-
- animator.SetBool("Jump", !isGrounded);
-
- return isGrounded;
- }
-
- private void OnTriggerEnter2D(Collider2D collision)
- {
- if (collision.CompareTag("Coin"))
+ void Update()
{
- GameManager.Instance.AddCoin();
- Destroy(collision.gameObject);
+ // Передвижение
+ inputX = Input.GetAxisRaw("Horizontal");
+
+ if (Input.GetButtonDown("Jump"))
+ lastJumpPressedTime = Time.time;
+
+ if (Input.GetButtonUp("Jump")) // && rb.linearVelocity.y > 0f)
+ rb.linearVelocity = new Vector2(rb.linearVelocity.x, rb.linearVelocity.y * jumpCut);
+
+ if (inputX != 0f)
+ transform.localScale = new Vector3(Mathf.Sign(inputX) * spriteScale, spriteScale, spriteScale);
+
+ if (IsGrounded) lastGroundedTime = Time.time;
+
+ // Данные для анимаций
+ animator.SetFloat("Speed", Mathf.Abs(rb.linearVelocity.x));
+ animator.SetFloat("VSpeed", rb.linearVelocity.y);
+ animator.SetBool("Grounded", IsGrounded);
}
- if (collision.CompareTag("Finish"))
+
+
+ void FixedUpdate()
{
- GameManager.Instance.NextLevel();
- }
- }
+ float target = inputX * moveSpeed;
+ float rate = (Mathf.Abs(target) > 0.01f) ? accel : decel;
+ float vx = Mathf.MoveTowards(rb.linearVelocity.x, target, rate * Time.fixedDeltaTime);
- public void Die()
- {
- GameManager.Instance.ResetLevel();
+ if (transform.position.y < -5) Die();
+
+ // Возможность прыжка
+ bool canJump = (Time.time - lastGroundedTime) <= jumpCooldown;
+ bool wantJump = (Time.time - lastJumpPressedTime) <= jumpBuffer;
+
+ if (wantJump && canJump && IsGrounded)
+ {
+ float vy = CalcJumpSpeed(maxJumpHeight);
+ rb.linearVelocity = new Vector2(vx, vy);
+ animator.SetBool("Jump", true);
+ lastJumpPressedTime = -999f;
+ return;
+ }
+
+ rb.linearVelocity = new Vector2(vx, rb.linearVelocity.y);
+ }
+
+ private void OnTriggerEnter2D(Collider2D collision)
+ {
+ if (collision.CompareTag("Coin"))
+ {
+ GameManager.Instance.AddCoin();
+ Destroy(collision.gameObject);
+ }
+
+ if (collision.CompareTag("Finish"))
+ {
+ GameManager.Instance.NextLevel();
+ }
+ }
+
+ private void OnDestroy() => Debug.Log("Player destroyed");
+
+
+ ///
+ /// Метод для просчитывания скорости прыжка с учетом высоты прыжка
+ ///
+ /// Высота прыжка (высшая точка по y)
+ /// float jumpSpeed - высчитанная скорость прыжка
+ float CalcJumpSpeed(float height)
+ {
+ float g = Physics2D.gravity.y * rb.gravityScale;
+
+ return Mathf.Sqrt(-2f * g * height);
+ }
+
+ ///
+ /// Метод для проверки соприкосновения с землей
+ ///
+ /// bool isGrounded - на земле ли игрок
+ bool Grounded()
+ {
+ RaycastHit2D hit = Physics2D.CircleCast(new Vector2(col.bounds.center.x, col.bounds.min.y), 0.01f, Vector2.down, 0.1f);
+ bool isGrounded = hit.collider != null;
+
+ animator.SetBool("Jump", !isGrounded);
+
+ return isGrounded;
+ }
+
+ ///
+ /// Метод смерти персонажа.
+ /// Базовое поведение - сброс уровня в GameManager
+ ///
+ public void Die()
+ {
+ GameManager.Instance.ResetLevel();
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/PlayerSpawn.cs b/Assets/Resources/Scripts/PlayerSpawn.cs
index 0544e6f..813bdd5 100644
--- a/Assets/Resources/Scripts/PlayerSpawn.cs
+++ b/Assets/Resources/Scripts/PlayerSpawn.cs
@@ -1,16 +1,19 @@
-using UnityEngine;
+using UnityEngine;
-public class PlayerSpawn : MonoBehaviour
+namespace RR.Game2D.Core
{
- // Start is called once before the first execution of Update after the MonoBehaviour is created
- void Start()
+ public class PlayerSpawn : MonoBehaviour
{
-
- }
+ // Start is called once before the first execution of Update after the MonoBehaviour is created
+ void Start()
+ {
- // Update is called once per frame
- void Update()
- {
-
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Projectiles/BasicProjectile.cs b/Assets/Resources/Scripts/Projectiles/BasicProjectile.cs
index 7c992b7..5981f1c 100644
--- a/Assets/Resources/Scripts/Projectiles/BasicProjectile.cs
+++ b/Assets/Resources/Scripts/Projectiles/BasicProjectile.cs
@@ -1,43 +1,39 @@
using UnityEngine;
-using Projectiles2D;
+using RR.Game2D.Core;
+using RR.Game2D.Behaviour;
-public class BasicProjectile : Projectile2D
+namespace RR.Game2D.Entities.Projectiles
{
- protected override void OnHit(Collision2D target, Vector2 point, Vector2 relativeVelocity)
+ public class BasicProjectile : Projectile2D
{
- //var health = target.GetComponentInParent();
- //if (health != null)
- //{
- // health.ApplyDamage(damage);
-
- // if (knockback > 0f)
- // {
- // var targetRb = target.attachedRigidbody;
- // if (targetRb != null)
- // {
- // var dir = relativeVelocity.sqrMagnitude > 0.0001f
- // ? relativeVelocity.normalized
- // : (Vector2)(target.transform.position - transform.position).normalized;
-
- // targetRb.AddForce(dir * knockback, ForceMode2D.Impulse);
- // }
- // }
- //}
- var player = GameManager.Instance.PlayerObj;
-
- if (target.collider.CompareTag("Player"))
- player.GetComponent().Die();
- else if (target.collider.CompareTag("Projectile") || target.collider.CompareTag("Enemy"))
- Despawn();
-
-
- if (hitVfxPrefab != null)
+ protected override void OnHit(Collision2D target, Vector2 point, Vector2 relativeVelocity)
{
- Instantiate(hitVfxPrefab, point, Quaternion.identity);
- }
- if (hitSfx != null)
- {
- AudioSource.PlayClipAtPoint(hitSfx, point, sfxVolume);
+ //var health = target.GetComponentInParent();
+ //if (health != null)
+ //{
+ // health.ApplyDamage(damage);
+
+ // if (knockback > 0f)
+ // {
+ // var targetRb = target.attachedRigidbody;
+ // if (targetRb != null)
+ // {
+ // var dir = relativeVelocity.sqrMagnitude > 0.0001f
+ // ? relativeVelocity.normalized
+ // : (Vector2)(target.transform.position - transform.position).normalized;
+
+ // targetRb.AddForce(dir * knockback, ForceMode2D.Impulse);
+ // }
+ // }
+ //}
+ var player = GameManager.Instance.PlayerObj;
+
+ if (target.collider.CompareTag("Player"))
+ player.GetComponent().Die();
+ else if (target.collider.CompareTag("Projectile") || target.collider.CompareTag("Enemy"))
+ Despawn();
+
+ base.OnHit(target, point, relativeVelocity);
}
}
}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Projectiles/PhysicsProjectile.cs b/Assets/Resources/Scripts/Projectiles/PhysicsProjectile.cs
index 4041be3..b169b50 100644
--- a/Assets/Resources/Scripts/Projectiles/PhysicsProjectile.cs
+++ b/Assets/Resources/Scripts/Projectiles/PhysicsProjectile.cs
@@ -1,33 +1,36 @@
using UnityEngine;
-public class PhysicsProjectile : BasicProjectile
+namespace RR.Game2D.Entities.Projectiles
{
- protected override void OnEnable()
+ public class PhysicsProjectile : BasicProjectile
{
- remainingPierce = maxPierce;
- if (maxLifetime > 0f)
- Invoke(nameof(Despawn), maxLifetime);
+ protected override void OnEnable()
+ {
+ remainingPierce = maxPierce;
+ if (maxLifetime > 0f)
+ Invoke(nameof(Despawn), maxLifetime);
+ }
+
+ public override void Launch(Vector2 direction, float speed = -1f, GameObject owner = null, float ignoreOwnerTime = 0.1f)
+ {
+ this.owner = owner;
+ launched = true;
+
+ Vector2 dir = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
+ float finalSpeed = (speed > 0f) ? speed : initialSpeed;
+
+ rb.simulated = true;
+ rb.bodyType = RigidbodyType2D.Dynamic;
+
+ rb.linearVelocity = Vector2.zero;
+ rb.angularVelocity = 0f;
+
+ rb.AddForce(finalSpeed * rb.mass * dir, ForceMode2D.Impulse);
+
+ transform.right = dir;
+
+ if (owner != null && ignoreOwnerTime > 0f)
+ StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTime));
+ }
}
-
- public override void Launch(Vector2 direction, float speed = -1f, GameObject owner = null, float ignoreOwnerTime = 0.1f)
- {
- this.owner = owner;
- launched = true;
-
- Vector2 dir = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
- float finalSpeed = (speed > 0f) ? speed : initialSpeed;
-
- rb.simulated = true;
- rb.bodyType = RigidbodyType2D.Dynamic;
-
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
-
- rb.AddForce(finalSpeed * rb.mass * dir, ForceMode2D.Impulse);
-
- transform.right = dir;
-
- if (owner != null && ignoreOwnerTime > 0f)
- StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTime));
- }
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Projectiles/PickableProjectile.cs b/Assets/Resources/Scripts/Projectiles/PickableProjectile.cs
index e17a286..cc632cd 100644
--- a/Assets/Resources/Scripts/Projectiles/PickableProjectile.cs
+++ b/Assets/Resources/Scripts/Projectiles/PickableProjectile.cs
@@ -1,392 +1,431 @@
using UnityEngine;
-using Projectiles2D;
+using RR.Game2D.Core;
+using RR.Game2D.Behaviour;
-[DisallowMultipleComponent]
-[RequireComponent(typeof(Rigidbody2D))]
-[RequireComponent(typeof(Collider2D))]
-public class PickableProjectile : Projectile2D
+namespace RR.Game2D.Entities.Projectiles
{
- public static PickableProjectile Instance { get; private set; }
-
- public enum State { Held, Airborne, Grounded, Returning }
- public State CurrentState { get; private set; } = State.Grounded;
-
- [Header("Подбор и прикрепление")]
- public Vector3 heldLocalOffset = new(0.25f, 0.1f, 0f);
- public bool snapExactlyToAttachPoint = true;
- public float ignoreOwnerTimeOnThrow = 0.25f;
- public string attachPointChildName = "HandPoint";
-
- [Header("Приземление")]
- public float sleepVelocity = 0.05f;
- public bool lockWhenLanded = true;
-
- [Header("Отскоки")]
- public int maxBounces = 3;
- public float minBounceSpeed = 0.8f;
- [Range(0f, 1f)] public float restitution = 0.6f;
- [Range(0f, 1f)] public float tangentDamping = 0.85f;
- [Range(0f, 1f)] public float groundUpTolerance = 0.25f;
- public float stickDelayAfterImpact = 0.03f;
-
- [Tooltip("Старт возврата, если дальше этой дистанции от точки руки.")]
- public float recallStartDistance = 8f;
- [Tooltip("На этой дистанции от руки считаем, что прилетел и подбираем.")]
- public float recallArriveDistance = 1f;
- public float recallSpeed = 16f;
- public float recallAcceleration = 60f;
-
- [Header("Gizmos")]
- public bool drawGizmos;
- public Color gizmoColor = new Color(0.2f, 0.8f, 1f, 0.35f);
-
- private Transform holderAttachPoint;
- private int bounceCounter = 0;
- private float lastImpactTime = -999f;
- private Vector3 baseLocalScale = Vector3.one;
-
- private bool hadBeenHeld = false;
- private GameObject lastKnownHolder;
-
- protected override void Awake()
+ [DisallowMultipleComponent]
+ [RequireComponent(typeof(Rigidbody2D),
+ typeof(Collider2D))]
+ public class PickableProjectile : Projectile2D
{
- base.Awake();
+ public static PickableProjectile Instance { get; private set; }
- if (Instance != null && Instance != this)
+ public enum State { Held, Airborne, Grounded, Returning }
+ public State CurrentState { get; private set; } = State.Grounded;
+
+ [Header("Подбор и прикрепление")]
+ [SerializeField] private Vector3 heldLocalOffset = new(0.25f, 0.1f, 0f);
+ [SerializeField] private float heldScale = 1.5f;
+ [SerializeField] private float ignoreOwnerTimeOnThrow = 0.25f;
+ [SerializeField] private string attachPointChildName = "HandPoint";
+
+ [Header("Приземление")]
+ [SerializeField] private float groundVelocity = 0.05f;
+ [SerializeField] private bool lockWhenLanded = true;
+
+ [Header("Отскоки")]
+ [SerializeField] private int maxBounces = 3;
+ [SerializeField] private float minBounceSpeed = 0.8f;
+ [SerializeField, Range(0f, 1f)] private float restitution = 0.6f;
+ [SerializeField, Range(0f, 1f)] private float tangentDamping = 0.85f;
+ [SerializeField] private float stickDelayAfterImpact = 0.03f;
+
+ [Tooltip("Старт возврата, если дальше этой дистанции от точки руки.")]
+ [SerializeField] private float recallStartDistance = 8f;
+ [Tooltip("На этой дистанции от руки считаем, что прилетел и подбираем.")]
+ [SerializeField] private float recallArriveDistance = 1f;
+ [SerializeField] private float recallSpeed = 16f;
+
+ [Header("Gizmos")]
+ [SerializeField] private bool drawGizmos;
+ [SerializeField] private Color gizmoColor = new Color(0.2f, 0.8f, 1f, 0.35f);
+
+ private Transform holderAttachPoint;
+ private int bounceCounter = 0;
+ private float lastImpactTime = -999f;
+ private Vector3 baseLocalScale = Vector3.one;
+
+ private bool hadBeenHeld = false;
+ private GameObject lastKnownHolder;
+
+ //---------------------------
+ // Singleton
+ //---------------------------
+ protected override void Awake()
{
- Destroy(gameObject);
- return;
+ base.Awake();
+
+ if (Instance != null && Instance != this)
+ {
+ Destroy(gameObject);
+ return;
+ }
+
+ Instance = this;
}
- Instance = this;
- }
-
- private void OnDestroy()
- {
- if (Instance == this) Instance = null;
- }
-
-
- private void Start()
- {
- rb.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
- col.isTrigger = false;
-
- if (CurrentState != State.Held)
- BecomeGrounded(null);
- }
-
- protected override void FixedUpdate()
- {
- base.FixedUpdate();
-
- if (!lockWhenLanded && CurrentState == State.Airborne)
+ private void OnDestroy()
{
- if (rb.linearVelocity.sqrMagnitude < (sleepVelocity * sleepVelocity))
+ if (Instance == this) Instance = null;
+ }
+ //---------------------------
+ //
+ //---------------------------
+
+ private void Start()
+ {
+ rb.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
+ col.isTrigger = false;
+
+ if (CurrentState != State.Held)
BecomeGrounded(null);
}
- if ((CurrentState == State.Airborne || CurrentState == State.Returning) && rb.linearVelocity.sqrMagnitude > 0.0001f)
- transform.up = rb.linearVelocity.normalized;
-
- if (CurrentState == State.Airborne && rb.linearVelocity.magnitude < 0.1f)
- BecomeGrounded(null);
-
- if (hadBeenHeld && CurrentState != State.Held)
- HandleRecallToPlayer();
- }
-
- protected override void OnCollisionEnter2D(Collision2D collision)
- {
- var otherRb = collision.rigidbody ? collision.rigidbody : collision.otherRigidbody;
- var otherGO = (collision.collider ? collision.collider.attachedRigidbody?.gameObject : null)
- ?? otherRb?.gameObject
- ?? collision.gameObject;
-
- if (otherGO && otherGO.CompareTag("Player") && CurrentState != State.Held)
+ protected override void FixedUpdate()
{
- if (TryPickup(otherGO)) return;
- }
+ base.FixedUpdate();
- base.OnCollisionEnter2D(collision);
-
- if (CurrentState == State.Airborne)
- {
- if (TryBounce(collision))
+ if (!lockWhenLanded && CurrentState == State.Airborne)
{
- lastImpactTime = Time.time;
- return;
+ if (rb.linearVelocity.sqrMagnitude < (groundVelocity * groundVelocity))
+ BecomeGrounded(null);
}
- BecomeGrounded(collision);
+ if ((CurrentState == State.Airborne || CurrentState == State.Returning) && rb.linearVelocity.sqrMagnitude > 0.0001f)
+ transform.up = rb.linearVelocity.normalized;
+
+ if (CurrentState == State.Airborne && rb.linearVelocity.magnitude < 0.1f)
+ BecomeGrounded(null);
+
+ if (hadBeenHeld && CurrentState != State.Held)
+ HandleRecallToPlayer();
}
- }
- public bool TryPickup(GameObject newHolder, Transform optionalAttachPoint = null)
- {
- if (CurrentState == State.Held) return true;
-
- owner = newHolder;
- lastKnownHolder = newHolder;
-
- holderAttachPoint = optionalAttachPoint ?? FindAttachPoint(newHolder);
- var fireScript = newHolder.GetComponent();
- if (holderAttachPoint == null && fireScript != null)
- holderAttachPoint = fireScript.attachPoint;
- if (holderAttachPoint == null)
- holderAttachPoint = newHolder.transform;
-
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
- rb.bodyType = RigidbodyType2D.Kinematic;
- col.enabled = false;
-
- transform.SetParent(holderAttachPoint, worldPositionStays: true);
- transform.position = holderAttachPoint.TransformPoint(heldLocalOffset);
- //transform.rotation = holderAttachPoint.rotation;
- transform.localScale = baseLocalScale;
-
- if (fireScript != null) fireScript.BindProjectile(this);
-
- StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTimeOnThrow));
-
- CurrentState = State.Held;
- launched = false;
- hadBeenHeld = true;
-
- return true;
- }
-
- private Transform ResolveAttachPoint(GameObject holder, Transform preferred = null)
- {
- if (preferred) return preferred;
-
- PlayerFireScript fireScript = holder.GetComponent();
- if (fireScript && fireScript.attachPoint) return fireScript.attachPoint;
-
- return holder.transform;
- }
-
- public void Launch(Vector2 direction, float speed, GameObject throwOwner = null)
- {
- if (CurrentState == State.Held)
- transform.SetParent(null, worldPositionStays: true);
-
- owner = throwOwner;
- lastKnownHolder = throwOwner;
- holderAttachPoint = null;
-
- rb.bodyType = RigidbodyType2D.Dynamic;
- col.enabled = true;
-
- launched = true;
-
- Vector2 launchDirection = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
- float finalSpeed = (speed > 0f) ? speed : initialSpeed;
-
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
- rb.AddForce(launchDirection * finalSpeed * rb.mass, ForceMode2D.Impulse);
-
- transform.up = launchDirection;
- transform.localScale = baseLocalScale;
-
- if (throwOwner != null && ignoreOwnerTimeOnThrow > 0f)
- StartCoroutine(IgnoreOwnerTemporarily(throwOwner, ignoreOwnerTimeOnThrow));
-
- CurrentState = State.Airborne;
- bounceCounter = 0;
- }
-
-
- protected override void OnImpactFinal(Collision2D collision)
- {
- if (!TryBounce(collision))
- BecomeGrounded(collision);
- }
-
- protected override void OnImpactFinal(Collider2D other)
- {
- if (Time.time - lastImpactTime > stickDelayAfterImpact)
- BecomeGrounded(null);
- }
-
- private bool TryBounce(Collision2D collision)
- {
- if (Time.time - lastImpactTime < stickDelayAfterImpact)
- return true;
-
- Vector2 velocityIn = rb.linearVelocity;
- float speed = velocityIn.magnitude;
- if (speed < minBounceSpeed) return false;
-
- Vector2 n;
- float impulseSum = 0f;
- float minSeparation = float.PositiveInfinity;
-
- if (collision.contactCount > 0)
+ protected override void OnCollisionEnter2D(Collision2D collision)
{
- Vector2 sum = Vector2.zero;
- for (int i = 0; i < collision.contactCount; i++)
+ var otherRb = collision.rigidbody ? collision.rigidbody : collision.otherRigidbody;
+ var otherGO = (collision.collider ? collision.collider.attachedRigidbody?.gameObject : null)
+ ?? otherRb?.gameObject
+ ?? collision.gameObject;
+
+ if (otherGO && otherGO.CompareTag("Player") && CurrentState != State.Held)
{
- ContactPoint2D contactPoint = collision.GetContact(i);
- float impulse = Mathf.Max(0.0001f, Mathf.Abs(contactPoint.normalImpulse));
- sum += contactPoint.normal * impulse;
- impulseSum += impulse;
- if (contactPoint.separation < minSeparation) minSeparation = contactPoint.separation;
+ if (TryPickup(otherGO)) return;
}
- n = (impulseSum > 0f ? sum / impulseSum : sum);
+ base.OnCollisionEnter2D(collision);
- if (n.sqrMagnitude < 1e-6f) n = Vector2.up;
- else n.Normalize();
- }
- else
- {
- n = Vector2.up;
- minSeparation = 0f;
- }
-
- if (Vector2.Dot(velocityIn, n) > 0f) n = -n;
-
- float matBounciness = restitution;
- float frictionA = 0f, frictionB = 0f;
-
- var myColMat = col ? col.sharedMaterial : null;
- if (myColMat)
- {
- matBounciness = Mathf.Max(matBounciness, myColMat.bounciness);
- frictionA = Mathf.Clamp01(myColMat.friction);
- }
-
- var otherCol = collision.collider;
- if (otherCol)
- {
- var otherMat = otherCol.sharedMaterial;
- if (otherMat)
+ if (CurrentState == State.Airborne)
{
- matBounciness = Mathf.Max(matBounciness, otherMat.bounciness);
- frictionB = Mathf.Clamp01(otherMat.friction);
+ if (TryBounce(collision))
+ {
+ lastImpactTime = Time.time;
+ return;
+ }
+
+ BecomeGrounded(collision);
}
}
- float tangentFactor = (1f - frictionA) * (1f - frictionB) * Mathf.Clamp01(tangentDamping);
-
- Vector2 vN = Vector2.Dot(velocityIn, n) * n;
- Vector2 vT = velocityIn - vN;
-
- Vector2 velocityOut = (-vN) * matBounciness + vT * tangentFactor;
-
- rb.linearVelocity = velocityOut;
-
- float pushOut = 0.005f;
- if (minSeparation < 0f) pushOut = Mathf.Max(pushOut, -minSeparation + 0.001f);
- rb.position += n * pushOut;
-
- if (velocityOut.sqrMagnitude > 1e-6f)
- transform.up = velocityOut.normalized;
-
- bounceCounter++;
- if (bounceCounter >= maxBounces)
- return false;
-
- CurrentState = State.Airborne;
- return true;
- }
-
- private void BecomeGrounded(Collision2D collision)
- {
- launched = false;
- CurrentState = State.Grounded;
-
- if (lockWhenLanded)
+ ///
+ /// Метод для подбора снаряда игроком.
+ /// Привязывает снаряд к точке привязки на игроке.
+ ///
+ /// Держатель снаряда
+ /// Опциональная точка привязки. При передаче, снаряд будет привязан на нее
+ /// bool isPickedUp - получилось ли поднять снаряд
+ public bool TryPickup(GameObject newHolder, Transform optionalAttachPoint = null)
{
+ if (CurrentState == State.Held) return true;
+
+ owner = newHolder;
+ lastKnownHolder = newHolder;
+
+ holderAttachPoint = optionalAttachPoint ?? FindAttachPoint(newHolder);
+ var fireScript = newHolder.GetComponent();
+ if (holderAttachPoint == null && fireScript != null)
+ holderAttachPoint = fireScript.attachPoint;
+ if (holderAttachPoint == null)
+ holderAttachPoint = newHolder.transform;
+
rb.linearVelocity = Vector2.zero;
rb.angularVelocity = 0f;
rb.bodyType = RigidbodyType2D.Kinematic;
+ col.enabled = false;
+
+ transform.SetParent(holderAttachPoint);//, worldPositionStays: true); // Баг остался, но пока в комменте
+ transform.position = holderAttachPoint.TransformPoint(heldLocalOffset);
+ transform.rotation = new Quaternion(0, 90f, 0, 0);
+ transform.localScale = baseLocalScale * heldScale;
+
+ if (fireScript != null) fireScript.BindProjectile(this);
+
+ StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTimeOnThrow));
+
+ CurrentState = State.Held;
+ launched = false;
+ hadBeenHeld = true;
+
+ return true;
}
- else
+
+ ///
+ /// Метод для получения точки привязки на игроке.
+ ///
+ /// Игрок, который держит снаряд
+ /// Опциональная точка привязки. При передаче, снаряд будет привязан на нее
+ /// Transform attachPoint - точкка привязки
+ private Transform ResolveAttachPoint(GameObject holder, Transform preferred = null)
{
+ if (preferred) return preferred;
+
+ PlayerFireScript fireScript = holder.GetComponent();
+ if (fireScript && fireScript.attachPoint) return fireScript.attachPoint;
+
+ return holder.transform;
+ }
+
+ public void Launch(Vector2 direction, float speed, GameObject throwOwner = null)
+ {
+ if (CurrentState == State.Held)
+ transform.SetParent(null, worldPositionStays: true);
+
+ owner = throwOwner;
+ lastKnownHolder = throwOwner;
+ holderAttachPoint = null;
+
rb.bodyType = RigidbodyType2D.Dynamic;
+ col.enabled = true;
+
+ launched = true;
+
+ Vector2 launchDirection = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
+ float finalSpeed = (speed > 0f) ? speed : initialSpeed;
+
+ rb.linearVelocity = Vector2.zero;
+ rb.angularVelocity = 0f;
+ rb.AddForce(launchDirection * finalSpeed * rb.mass, ForceMode2D.Impulse);
+
+ transform.up = launchDirection;
+ transform.localScale = baseLocalScale;
+
+ if (throwOwner != null && ignoreOwnerTimeOnThrow > 0f)
+ StartCoroutine(IgnoreOwnerTemporarily(throwOwner, ignoreOwnerTimeOnThrow));
+
+ CurrentState = State.Airborne;
+ bounceCounter = 0;
}
- col.enabled = true;
- transform.SetParent(null, true);
- bounceCounter = 0;
- }
- private Transform FindAttachPoint(GameObject owner)
- {
- if (string.IsNullOrWhiteSpace(attachPointChildName)) return null;
- var ownerTransform = owner.transform.Find(attachPointChildName);
- return ownerTransform;
- }
-
- private void HandleRecallToPlayer()
- {
- GameObject playerGo = lastKnownHolder;
-
- if (playerGo == null || !playerGo.activeInHierarchy)
- playerGo = (GameManager.Instance && GameManager.Instance.PlayerObj)
- ? GameManager.Instance.PlayerObj
- : GameObject.FindWithTag("Player");
-
- if (!playerGo) return;
-
- var attachPoint = ResolveAttachPoint(playerGo);
-
- bool isVisible = false;
- var mainCamera = Camera.main;
- float margin = 0.1f;
-
- if (mainCamera)
+ protected override void OnImpactFinal(Collision2D collision)
{
- Vector3 viewPoint = mainCamera.WorldToViewportPoint(transform.position);
- isVisible = viewPoint.x >= -margin && viewPoint.x <= 1f + margin
- && viewPoint.y >= -margin && viewPoint.y <= 1f + margin;
- }
- else
- {
- Vector2 toOwnerTest = (Vector2)attachPoint.position - rb.position;
- isVisible = (toOwnerTest.magnitude <= recallStartDistance);
+ if (!TryBounce(collision))
+ BecomeGrounded(collision);
}
- Vector2 toOwner = (Vector2)attachPoint.position - rb.position;
- float dist = toOwner.magnitude;
-
- if (CurrentState != State.Returning)
+ protected override void OnImpactFinal(Collider2D other)
{
- if (!isVisible)
+ if (Time.time - lastImpactTime > stickDelayAfterImpact)
+ BecomeGrounded(null);
+ }
+
+ ///
+ /// Метод для просчета отскоков.
+ ///
+ /// Коллизия, с которой столкнулся снаряд
+ /// bool isBounced - произошел ли отскок
+ private bool TryBounce(Collision2D collision)
+ {
+ if (Time.time - lastImpactTime < stickDelayAfterImpact)
+ return true;
+
+ Vector2 velocityIn = rb.linearVelocity;
+ float speed = velocityIn.magnitude;
+ if (speed < minBounceSpeed) return false;
+
+ Vector2 normal;
+ float impulseSum = 0f;
+ float minSeparation = float.PositiveInfinity;
+
+ if (collision.contactCount > 0)
{
- CurrentState = State.Returning;
- rb.bodyType = RigidbodyType2D.Dynamic;
- col.enabled = false;
+ Vector2 sum = Vector2.zero;
+ for (int i = 0; i < collision.contactCount; i++)
+ {
+ ContactPoint2D contactPoint = collision.GetContact(i);
+ float impulse = Mathf.Max(0.0001f, Mathf.Abs(contactPoint.normalImpulse));
+ sum += contactPoint.normal * impulse;
+ impulseSum += impulse;
+ if (contactPoint.separation < minSeparation) minSeparation = contactPoint.separation;
+ }
+
+ normal = (impulseSum > 0f ? sum / impulseSum : sum);
+
+ if (normal.sqrMagnitude < 1e-6f) normal = Vector2.up;
+ else normal.Normalize();
}
else
{
- return;
+ normal = Vector2.up;
+ minSeparation = 0f;
}
+
+ if (Vector2.Dot(velocityIn, normal) > 0f) normal = -normal;
+
+ float matBounciness = restitution;
+ float frictionA = 0f, frictionB = 0f;
+
+ var projectileColMat = col ? col.sharedMaterial : null;
+ if (projectileColMat)
+ {
+ matBounciness = Mathf.Max(matBounciness, projectileColMat.bounciness);
+ frictionA = Mathf.Clamp01(projectileColMat.friction);
+ }
+
+ var otherCol = collision.collider;
+ if (otherCol)
+ {
+ var otherMat = otherCol.sharedMaterial;
+ if (otherMat)
+ {
+ matBounciness = Mathf.Max(matBounciness, otherMat.bounciness);
+ frictionB = Mathf.Clamp01(otherMat.friction);
+ }
+ }
+
+ float tangentFactor = (1f - frictionA) * (1f - frictionB) * Mathf.Clamp01(tangentDamping);
+
+ Vector2 velocityNormal = Vector2.Dot(velocityIn, normal) * normal;
+ Vector2 velocityTangent = velocityIn - velocityNormal;
+
+ Vector2 velocityOut = (-velocityNormal) * matBounciness + velocityTangent * tangentFactor;
+
+ rb.linearVelocity = velocityOut;
+
+ float pushOut = 0.005f;
+ if (minSeparation < 0f) pushOut = Mathf.Max(pushOut, -minSeparation + 0.001f);
+ rb.position += normal * pushOut;
+
+ if (velocityOut.sqrMagnitude > 1e-6f)
+ transform.up = velocityOut.normalized;
+
+ bounceCounter++;
+ if (bounceCounter >= maxBounces)
+ return false;
+
+ CurrentState = State.Airborne;
+ return true;
}
- //float speed = rb.linearVelocity.magnitude;
- //if (speed < 8f) speed = recallSpeed;
- Vector2 dir = (dist > 0.001f) ? (toOwner / dist) : rb.linearVelocity.normalized;
- rb.linearVelocity = dir * recallSpeed; //* speed;
- if (rb.linearVelocity.sqrMagnitude > 0.01f)
- transform.up = rb.linearVelocity.normalized;
+ ///
+ /// Метод для заморозки снаряда на земле.
+ ///
+ /// Коллизия, с которой столкнулся снаряд
+ private void BecomeGrounded(Collision2D collision)
+ {
+ launched = false;
+ CurrentState = State.Grounded;
- if (dist <= recallArriveDistance)
- TryPickup(playerGo);
- }
+ if (lockWhenLanded)
+ {
+ rb.linearVelocity = Vector2.zero;
+ rb.angularVelocity = 0f;
+ rb.bodyType = RigidbodyType2D.Kinematic;
+ }
+ else
+ {
+ rb.bodyType = RigidbodyType2D.Dynamic;
+ }
+
+ col.enabled = true;
+ transform.SetParent(null, true);
+ bounceCounter = 0;
+ }
+
+ ///
+ /// Метод для поиска точки привязки на игроке.
+ ///
+ /// Объект игрока
+ /// Transform attachPoint - точка привязки
+ private Transform FindAttachPoint(GameObject owner)
+ {
+ if (string.IsNullOrWhiteSpace(attachPointChildName)) return null;
+ var ownerTransform = owner.transform.Find(attachPointChildName);
+ return ownerTransform;
+ }
+
+ ///
+ /// Метод для обработки возвращения снаряда к игроку.
+ /// При возвращении снаряд игнорирует любые коллизии.
+ ///
+ private void HandleRecallToPlayer()
+ {
+ GameObject playerGo = lastKnownHolder;
+
+ if (playerGo == null || !playerGo.activeInHierarchy)
+ playerGo = (GameManager.Instance && GameManager.Instance.PlayerObj)
+ ? GameManager.Instance.PlayerObj
+ : GameObject.FindWithTag("Player");
+
+ if (!playerGo) return;
+
+ var attachPoint = ResolveAttachPoint(playerGo);
+
+ bool isVisible = false;
+ var mainCamera = Camera.main;
+ float margin = 0.1f;
+
+ if (mainCamera)
+ {
+ Vector3 viewPoint = mainCamera.WorldToViewportPoint(transform.position);
+ isVisible = viewPoint.x >= -margin && viewPoint.x <= 1f + margin
+ && viewPoint.y >= -margin && viewPoint.y <= 1f + margin;
+ }
+ else
+ {
+ Vector2 toOwnerTest = (Vector2)attachPoint.position - rb.position;
+ isVisible = (toOwnerTest.magnitude <= recallStartDistance);
+ }
+
+ Vector2 toOwner = (Vector2)attachPoint.position - rb.position;
+ float dist = toOwner.magnitude;
+
+ if (CurrentState != State.Returning)
+ {
+ if (!isVisible)
+ {
+ CurrentState = State.Returning;
+ rb.bodyType = RigidbodyType2D.Dynamic;
+ col.enabled = false;
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ //float speed = rb.linearVelocity.magnitude;
+ //if (speed < 8f) speed = recallSpeed;
+ Vector2 dir = (dist > 0.001f) ? (toOwner / dist) : rb.linearVelocity.normalized;
+ rb.linearVelocity = dir * recallSpeed; //* speed;
+
+ if (rb.linearVelocity.sqrMagnitude > 0.01f)
+ transform.up = rb.linearVelocity.normalized;
+
+ if (dist <= recallArriveDistance)
+ TryPickup(playerGo);
+ }
#if UNITY_EDITOR
- private void OnDrawGizmosSelected()
- {
- if (!drawGizmos) return;
- Gizmos.color = gizmoColor;
- Gizmos.matrix = transform.localToWorldMatrix;
- Gizmos.DrawCube(new Vector3(heldLocalOffset.x, heldLocalOffset.y, 0), new Vector3(0.12f, 0.12f, 0.02f));
- }
+ private void OnDrawGizmosSelected()
+ {
+ if (!drawGizmos) return;
+ Gizmos.color = gizmoColor;
+ Gizmos.matrix = transform.localToWorldMatrix;
+ Gizmos.DrawCube(new Vector3(heldLocalOffset.x, heldLocalOffset.y, 0), new Vector3(0.12f, 0.12f, 0.02f));
+ }
#endif
-}
+ }
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/Projectiles/Pojectile2D.cs b/Assets/Resources/Scripts/Projectiles/Pojectile2D.cs
index c000c92..f7ae806 100644
--- a/Assets/Resources/Scripts/Projectiles/Pojectile2D.cs
+++ b/Assets/Resources/Scripts/Projectiles/Pojectile2D.cs
@@ -2,35 +2,35 @@
using System.Collections;
using UnityEngine;
-namespace Projectiles2D
+namespace RR.Game2D.Entities.Projectiles
{
- public interface IDamageable2D
- {
- void ApplyDamage(float amount, Vector2 hitPoint, Vector2 force, GameObject source);
- }
-
- [RequireComponent(typeof(Rigidbody2D))]
- [RequireComponent(typeof(Collider2D))]
+ [RequireComponent(typeof(Rigidbody2D), typeof(Collider2D))]
public abstract class Projectile2D : MonoBehaviour
{
+ [Header("Скорость")]
public float initialSpeed = 15f;
-
+
+ [Header("Скорость")]
public float maxLifetime = 5f;
- public bool alignRotationToVelocity = true;
-
- protected float damage = 10f;
-
- public float knockback = 0f;
-
+ [Header("Столкновения/пробивания")]
public LayerMask hitLayers = ~0;
-
public int maxPierce = 0;
+ [Header("Гравитация/физика")]
public bool useGravity = false;
-
public float gravityScale = 1f;
+ [Header("FX")]
+ [SerializeField] protected GameObject hitVfxPrefab;
+ [SerializeField] protected AudioClip hitSfx;
+ [SerializeField] protected float sfxVolume = 1f;
+
+ [Header("Другое")]
+ public bool alignRotationToVelocity = true;
+ protected float damage = 10f;
+ public float knockback = 0f;
+
protected Rigidbody2D rb;
protected Collider2D col;
@@ -38,11 +38,6 @@ namespace Projectiles2D
protected bool launched;
public GameObject owner;
- [Header("FX")]
- [SerializeField] protected GameObject hitVfxPrefab;
- [SerializeField] protected AudioClip hitSfx;
- [SerializeField] protected float sfxVolume = 1f;
-
protected virtual void Awake()
{
rb = GetComponent();
@@ -62,30 +57,6 @@ namespace Projectiles2D
// Invoke(nameof(Despawn), maxLifetime);
}
- public virtual void Launch(Vector2 direction, float speed = -1f, GameObject owner = null, float ignoreOwnerTime = 0.1f)
- {
- this.owner = owner;
- launched = true;
-
- float finalSpeed = (speed > 0f) ? speed : initialSpeed;
- rb.linearVelocity = direction.normalized * finalSpeed;
-
- if (owner != null && ignoreOwnerTime > 0f)
- StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTime));
- }
-
- protected virtual IEnumerator IgnoreOwnerTemporarily(GameObject who, float time)
- {
- Collider2D[] ownerColliders = who.GetComponentsInChildren();
- foreach (var oc in ownerColliders)
- if (oc && col) Physics2D.IgnoreCollision(col, oc, true);
-
- yield return new WaitForSeconds(time);
-
- foreach (var oc in ownerColliders)
- if (oc && col) Physics2D.IgnoreCollision(col, oc, false);
- }
-
protected virtual void FixedUpdate()
{
if (!launched) return;
@@ -115,11 +86,60 @@ namespace Projectiles2D
HandleHit(other, point, rb.linearVelocity, isTriggerEvent: true, collision: null);
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public virtual void Launch(Vector2 direction, float speed = -1f, GameObject owner = null, float ignoreOwnerTime = 0.1f)
+ {
+ this.owner = owner;
+ launched = true;
+
+ float finalSpeed = (speed > 0f) ? speed : initialSpeed;
+ rb.linearVelocity = direction.normalized * finalSpeed;
+
+ if (owner != null && ignoreOwnerTime > 0f)
+ StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTime));
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected virtual IEnumerator IgnoreOwnerTemporarily(GameObject who, float time)
+ {
+ Collider2D[] ownerColliders = who.GetComponentsInChildren();
+ foreach (var oc in ownerColliders)
+ if (oc && col) Physics2D.IgnoreCollision(col, oc, true);
+
+ yield return new WaitForSeconds(time);
+
+ foreach (var oc in ownerColliders)
+ if (oc && col) Physics2D.IgnoreCollision(col, oc, false);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
protected bool IsInHitLayer(int layer)
{
return ((1 << layer) & hitLayers.value) != 0;
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
protected void HandleHit(Collider2D target, Vector2 point, Vector2 relativeVelocity, bool isTriggerEvent, Collision2D collision)
{
TryDealDamage(target, point, relativeVelocity);
@@ -136,24 +156,57 @@ namespace Projectiles2D
else OnImpactFinal(collision);
}
- protected void TryDealDamage(Collider2D target, Vector2 hitPoint, Vector2 relativeVelocity)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected virtual void TryDealDamage(Collider2D target, Vector2 hitPoint, Vector2 relativeVelocity)
{
- var dmg = target.GetComponentInParent();
- if (dmg != null)
+ //var dmg = target.GetComponentInParent();
+ //if (dmg != null)
+ //{
+ // Vector2 force = (rb != null && rb.linearVelocity.sqrMagnitude > 0.001f)
+ // ? rb.linearVelocity.normalized * knockback
+ // : Vector2.zero;
+ // dmg.ApplyDamage(damage, hitPoint, force, owner ?? gameObject);
+ //}
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected virtual void OnHit(Collision2D collision, Vector2 point, Vector2 relativeVelocity)
+ {
+ if (hitVfxPrefab != null)
{
- Vector2 force = (rb != null && rb.linearVelocity.sqrMagnitude > 0.001f)
- ? rb.linearVelocity.normalized * knockback
- : Vector2.zero;
- dmg.ApplyDamage(damage, hitPoint, force, owner ?? gameObject);
+ Instantiate(hitVfxPrefab, point, Quaternion.identity);
+ }
+ if (hitSfx != null)
+ {
+ AudioSource.PlayClipAtPoint(hitSfx, point, sfxVolume);
}
}
- protected virtual void OnHit(Collision2D collision, Vector2 point, Vector2 relativeVelocity) { }
-
+ ///
+ ///
+ ///
+ ///
protected virtual void OnImpactFinal(Collision2D collision) => Despawn();
+ ///
+ ///
+ ///
+ ///
protected virtual void OnImpactFinal(Collider2D other) => Despawn();
+ ///
+ ///
+ ///
public virtual void Despawn()
{
Destroy(gameObject);
diff --git a/Assets/Resources/Scripts/Rotator.cs b/Assets/Resources/Scripts/Rotator.cs
new file mode 100644
index 0000000..4b82508
--- /dev/null
+++ b/Assets/Resources/Scripts/Rotator.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+
+namespace RR.Game2D.Behaviour
+{
+ public class CoinController : MonoBehaviour
+ {
+ private void FixedUpdate()
+ {
+ transform.Rotate(new Vector3(0f, 5f, 0f));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/CoinController.cs.meta b/Assets/Resources/Scripts/Rotator.cs.meta
similarity index 100%
rename from Assets/Resources/Scripts/CoinController.cs.meta
rename to Assets/Resources/Scripts/Rotator.cs.meta
diff --git a/Assets/Resources/Scripts/Temp.cs b/Assets/Resources/Scripts/Temp.cs
deleted file mode 100644
index 1a1a4cb..0000000
--- a/Assets/Resources/Scripts/Temp.cs
+++ /dev/null
@@ -1,319 +0,0 @@
-using UnityEngine;
-
-[DisallowMultipleComponent]
-[RequireComponent(typeof(Rigidbody2D))]
-[RequireComponent(typeof(Collider2D))]
-public class PickableProjectileTemp : BasicProjectile
-{
- // --- Singleton ---
- public static PickableProjectileTemp Instance { get; private set; }
-
- public enum State { Held, Airborne, Grounded, Returning }
- public State CurrentState { get; private set; } = State.Grounded;
-
- [Header("Pickup/Attach")]
- public Vector3 heldLocalOffset = new(0.25f, 0.1f, 0f);
- public float ignoreOwnerTimeOnThrow = 0.25f;
- public string attachPointChildName = "HandPoint";
-
- [Header("Physics on ground")]
- public float sleepVelocity = 0.05f;
- public bool lockWhenLanded = true;
-
- [Header("Bouncing")]
- public int maxBounces = 3;
- public float minBounceSpeed = 0.8f;
- [Range(0f, 1f)] public float restitution = 0.6f;
- [Range(0f, 1f)] public float tangentDamping = 0.85f;
- [Range(0f, 1f)] public float groundUpTolerance = 0.25f;
- public float stickDelayAfterImpact = 0.03f;
-
- [Header("Recall")]
- public float recallStartDistance = 8f;
- public float recallArriveDistance = 1f;
- public float recallMaxSpeed = 16f;
- public float recallAcceleration = 60f;
-
- [Header("Gizmos")]
- public bool drawGizmos;
- public Color gizmoColor = new Color(0.2f, 0.8f, 1f, 0.35f);
-
- private Transform holderAttachPoint;
- private int bounceCounter = 0;
- private float lastImpactTime = -999f;
-
- private bool hadBeenHeld = false;
- private GameObject lastKnownHolder;
-
- // локальный «таймер» игнора владельца после броска,
- // чтобы не подбирать мгновенно владельцем при столкновении
- private float ignoreOwnerUntil = -999f;
-
- protected override void Awake()
- {
- base.Awake();
- if (Instance != null && Instance != this)
- {
- Destroy(gameObject);
- return;
- }
- Instance = this;
- }
-
- private void OnDestroy()
- {
- if (Instance == this) Instance = null;
- }
-
- private void Start()
- {
- rb.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
- col.isTrigger = false;
-
- if (CurrentState != State.Held)
- BecomeGrounded(null);
- }
-
- public bool TryPickup(GameObject newHolder, Transform optionalAttachPoint = null)
- {
- if (CurrentState == State.Held) return true;
-
- owner = newHolder;
- lastKnownHolder = newHolder;
-
- holderAttachPoint = optionalAttachPoint ?? FindAttachPointOn(owner);
- if (holderAttachPoint == null) holderAttachPoint = owner.transform;
-
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
- rb.bodyType = RigidbodyType2D.Kinematic;
- col.enabled = false;
-
- transform.SetParent(holderAttachPoint, worldPositionStays: false);
- transform.localPosition = heldLocalOffset;
- transform.localRotation = Quaternion.identity;
- transform.localScale = Vector3.one * 2;
-
- // чуть-чуть игнорим владельца, чтобы не словить повторные коллизии
- ignoreOwnerUntil = Time.time + ignoreOwnerTimeOnThrow;
-
- StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTimeOnThrow));
-
- CurrentState = State.Held;
- launched = false;
-
- hadBeenHeld = true;
-
- // передадим ссылку игроку (если у него есть PlayerFireScript),
- // чтобы он знал «свой» снаряд
- var pfs = owner.GetComponent();
- //if (pfs) pfs.BindProjectile(this);
-
- return true;
- }
-
- public void Launch(Vector2 direction, float speed, GameObject throwOwner = null)
- {
- if (CurrentState == State.Held)
- transform.SetParent(null, true);
-
- owner = throwOwner;
- lastKnownHolder = throwOwner;
- holderAttachPoint = null;
-
- rb.bodyType = RigidbodyType2D.Dynamic;
- col.enabled = true;
-
- launched = true;
-
- Vector2 dir = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
- float finalSpeed = (speed > 0f) ? speed : initialSpeed;
-
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
- rb.AddForce(dir * finalSpeed * rb.mass, ForceMode2D.Impulse);
- transform.right = dir;
-
- if (throwOwner != null && ignoreOwnerTimeOnThrow > 0f)
- {
- ignoreOwnerUntil = Time.time + ignoreOwnerTimeOnThrow;
- StartCoroutine(IgnoreOwnerTemporarily(throwOwner, ignoreOwnerTimeOnThrow));
- }
-
- CurrentState = State.Airborne;
- bounceCounter = 0;
- }
-
- protected override void OnCollisionEnter2D(Collision2D collision)
- {
- // 1) если врезались в игрока — пробуем подобрать до логики рикошета
- var otherRb = collision.rigidbody ? collision.rigidbody : collision.otherRigidbody;
- var otherGo = (collision.collider ? collision.collider.attachedRigidbody?.gameObject : null)
- ?? otherRb?.gameObject
- ?? collision.gameObject;
-
- if (otherGo && otherGo.CompareTag("Player") && CurrentState != State.Held)
- {
- // не подбираем мгновенно того же владельца, если ещё в «игноре»
- if (otherGo != owner || Time.time >= ignoreOwnerUntil)
- {
- var hand = FindAttachPointOn(otherGo) ?? otherGo.transform;
- if (TryPickup(otherGo, hand)) return; // успешно подобрали — выходим
- }
- }
-
- // 2) обычная логика попадания/рикошета
- base.OnCollisionEnter2D(collision);
-
- if (CurrentState == State.Airborne)
- {
- if (TryBounce(collision))
- {
- lastImpactTime = Time.time;
- return;
- }
-
- BecomeGrounded(collision);
- }
- }
-
- protected override void OnImpactFinal(Collision2D collision)
- {
- if (!TryBounce(collision))
- BecomeGrounded(collision);
- }
-
- protected override void OnImpactFinal(Collider2D other)
- {
- if (Time.time - lastImpactTime > stickDelayAfterImpact)
- BecomeGrounded(null);
- }
-
- private bool TryBounce(Collision2D collision)
- {
- if (Time.time - lastImpactTime < stickDelayAfterImpact)
- return true;
-
- var v = rb.linearVelocity;
- float speed = v.magnitude;
- if (speed < minBounceSpeed) return false;
-
- Vector2 avgNormal = Vector2.up;
- if (collision.contactCount > 0)
- {
- avgNormal = Vector2.zero;
- for (int i = 0; i < collision.contactCount; i++)
- avgNormal += collision.GetContact(i).normal;
- avgNormal.Normalize();
- }
-
- Vector2 reflected = Vector2.Reflect(v, avgNormal) * restitution;
-
- Vector2 n = avgNormal;
- Vector2 vn = Vector2.Dot(reflected, n) * n;
- Vector2 vt = reflected - vn;
- reflected = vn + vt * tangentDamping;
-
- rb.linearVelocity = reflected;
- rb.position += n * 0.005f;
-
- bounceCounter++;
-
- if (bounceCounter >= maxBounces)
- return false;
-
- CurrentState = State.Airborne;
- return true;
- }
-
- private void BecomeGrounded(Collision2D collision)
- {
- launched = false;
- CurrentState = State.Grounded;
-
- if (lockWhenLanded)
- {
- rb.linearVelocity = Vector2.zero;
- rb.angularVelocity = 0f;
- rb.bodyType = RigidbodyType2D.Kinematic;
- }
- else
- {
- rb.bodyType = RigidbodyType2D.Dynamic;
- }
-
- col.enabled = true;
- transform.SetParent(null, true);
- bounceCounter = 0;
- }
-
- private Transform FindAttachPointOn(GameObject who)
- {
- if (string.IsNullOrWhiteSpace(attachPointChildName)) return null;
- return who.transform.Find(attachPointChildName);
- }
-
- protected override void FixedUpdate()
- {
- base.FixedUpdate();
-
- if (!lockWhenLanded && CurrentState == State.Airborne)
- {
- if (rb.linearVelocity.sqrMagnitude < (sleepVelocity * sleepVelocity))
- BecomeGrounded(null);
- }
-
- if (hadBeenHeld && CurrentState != State.Held)
- HandleRecallToPlayer();
- }
-
- private void HandleRecallToPlayer()
- {
- GameObject playerGo = lastKnownHolder;
-
- if (playerGo == null || !playerGo.activeInHierarchy)
- playerGo = GameObject.FindWithTag("Player");
-
- if (!playerGo) return;
-
- var hand = FindAttachPointOn(playerGo) ?? playerGo.transform;
-
- Vector2 toHand = (Vector2)hand.position - rb.position;
- float dist = toHand.magnitude;
-
- if (dist > recallStartDistance)
- {
- if (CurrentState != State.Returning)
- {
- CurrentState = State.Returning;
- rb.bodyType = RigidbodyType2D.Dynamic;
- col.enabled = true;
- }
-
- Vector2 desired = toHand.normalized * recallMaxSpeed;
- rb.linearVelocity = Vector2.MoveTowards(
- rb.linearVelocity, desired, recallAcceleration * Time.fixedDeltaTime);
-
- if (rb.linearVelocity.sqrMagnitude > 0.01f)
- transform.right = rb.linearVelocity.normalized;
-
- if (dist <= recallArriveDistance)
- TryPickup(playerGo, hand);
- }
- else
- {
- if (CurrentState == State.Returning)
- CurrentState = rb.bodyType == RigidbodyType2D.Dynamic ? State.Airborne : State.Grounded;
- }
- }
-
-#if UNITY_EDITOR
- private void OnDrawGizmosSelected()
- {
- if (!drawGizmos) return;
- Gizmos.color = gizmoColor;
- Gizmos.matrix = transform.localToWorldMatrix;
- Gizmos.DrawCube(new Vector3(heldLocalOffset.x, heldLocalOffset.y, 0), new Vector3(0.12f, 0.12f, 0.02f));
- }
-#endif
-}
diff --git a/Assets/Resources/Scripts/Temp.cs.meta b/Assets/Resources/Scripts/Temp.cs.meta
deleted file mode 100644
index 86cead7..0000000
--- a/Assets/Resources/Scripts/Temp.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: cfcb58e623aec0347a14faffcc5b438c
\ No newline at end of file
diff --git a/Assets/Resources/Scripts/UITextController.cs b/Assets/Resources/Scripts/UITextController.cs
index cfaff07..a051f6d 100644
--- a/Assets/Resources/Scripts/UITextController.cs
+++ b/Assets/Resources/Scripts/UITextController.cs
@@ -1,44 +1,48 @@
using TMPro;
using UnityEngine;
+using RR.Game2D.Core;
-public class UITextController : MonoBehaviour
+namespace RR.Common.UI
{
- [SerializeField] private int livesCount;
- [SerializeField] private int coinsCount;
- [SerializeField] private string levelNumber;
- [SerializeField] private TextMeshProUGUI livesText;
- [SerializeField] private TextMeshProUGUI coinsText;
- [SerializeField] private TextMeshProUGUI levelText;
-
- private void OnEnable()
+ public class UITextController : MonoBehaviour
{
- if (GameManager.Instance != null)
- GameManager.Instance.CoinsChanged += HandleCoinsChanged;
- }
+ [SerializeField] private int livesCount;
+ [SerializeField] private int coinsCount;
+ [SerializeField] private string levelNumber;
+ [SerializeField] private TextMeshProUGUI livesText;
+ [SerializeField] private TextMeshProUGUI coinsText;
+ [SerializeField] private TextMeshProUGUI levelText;
- private void OnDisable()
- {
- if (GameManager.Instance != null)
- GameManager.Instance.CoinsChanged -= HandleCoinsChanged;
- }
-
- void Start()
- {
- livesCount = GameManager.Instance.Lives;
- coinsCount = GameManager.Instance.Coins;
- levelNumber = $"{GameManager.Instance.World}-{GameManager.Instance.Stage}";
-
- livesText.text = livesCount.ToString();
- coinsText.text = coinsCount.ToString();
- levelText.text = levelNumber.ToString();
- }
-
- private void HandleCoinsChanged(int newCoins)
- {
- if (coinsCount != newCoins)
+ private void OnEnable()
{
- coinsCount = newCoins;
+ if (GameManager.Instance != null)
+ GameManager.Instance.CoinsChanged += HandleCoinsChanged;
+ }
+
+ private void OnDisable()
+ {
+ if (GameManager.Instance != null)
+ GameManager.Instance.CoinsChanged -= HandleCoinsChanged;
+ }
+
+ void Start()
+ {
+ livesCount = GameManager.Instance.Lives;
+ coinsCount = GameManager.Instance.Coins;
+ levelNumber = $"{GameManager.Instance.World}-{GameManager.Instance.Stage}";
+
+ livesText.text = livesCount.ToString();
coinsText.text = coinsCount.ToString();
+ levelText.text = levelNumber.ToString();
+ }
+
+ private void HandleCoinsChanged(int newCoins)
+ {
+ if (coinsCount != newCoins)
+ {
+ coinsCount = newCoins;
+ coinsText.text = coinsCount.ToString();
+ }
}
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Resources/Sprites/Sky.png b/Assets/Resources/Sprites/Sky.png
new file mode 100644
index 0000000..36bdf91
Binary files /dev/null and b/Assets/Resources/Sprites/Sky.png differ
diff --git a/Assets/Resources/Sprites/Sky.png.meta b/Assets/Resources/Sprites/Sky.png.meta
new file mode 100644
index 0000000..4cf5b25
--- /dev/null
+++ b/Assets/Resources/Sprites/Sky.png.meta
@@ -0,0 +1,156 @@
+fileFormatVersion: 2
+guid: 25cb7f3d57bee884b8217217cefc1d17
+TextureImporter:
+ internalIDToNameTable:
+ - first:
+ 213: 2410671940745902572
+ second: Sky_0
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 2
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 1
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites:
+ - serializedVersion: 2
+ name: Sky_0
+ rect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 4096
+ height: 2048
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: ce9392a9b5d647120800000000000000
+ internalID: 2410671940745902572
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable:
+ Sky_0: 2410671940745902572
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/UniversalRenderPipelineGlobalSettings.asset b/Assets/UniversalRenderPipelineGlobalSettings.asset
index 3631152..07d681f 100644
--- a/Assets/UniversalRenderPipelineGlobalSettings.asset
+++ b/Assets/UniversalRenderPipelineGlobalSettings.asset
@@ -60,17 +60,7 @@ MonoBehaviour:
- rid: 3895614828927516674
- rid: 3895614828927516675
m_RuntimeSettings:
- m_List:
- - rid: 7752762179098771456
- - rid: 7752762179098771457
- - rid: 7752762179098771459
- - rid: 7752762179098771461
- - rid: 7752762179098771462
- - rid: 7752762179098771464
- - rid: 7752762179098771466
- - rid: 7752762179098771468
- - rid: 7752762179098771472
- - rid: 7752762179098771476
+ m_List: []
m_AssetVersion: 8
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
m_RenderingLayerNames: