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: