Refactored all code; added XML-doc; Fixed some bugs
This commit is contained in:
parent
23f256ae51
commit
dbb4b576ca
1
Assets/Resources/PerformanceTestRunInfo.json
Normal file
1
Assets/Resources/PerformanceTestRunInfo.json
Normal file
@ -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":[]}
|
||||
7
Assets/Resources/PerformanceTestRunInfo.json.meta
Normal file
7
Assets/Resources/PerformanceTestRunInfo.json.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eea93e0095a8f6548b3de5197c7db7bf
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
1
Assets/Resources/PerformanceTestRunSettings.json
Normal file
1
Assets/Resources/PerformanceTestRunSettings.json
Normal file
@ -0,0 +1 @@
|
||||
{"MeasurementCount":-1}
|
||||
7
Assets/Resources/PerformanceTestRunSettings.json.meta
Normal file
7
Assets/Resources/PerformanceTestRunSettings.json.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5f1fc9a7902195d41a049f82f5324678
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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
|
||||
|
||||
@ -79,5 +79,5 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
projectilePrefab: {fileID: -4497857136159010500, guid: 6aec5580e6fdb3444ac411544f10714d, type: 3}
|
||||
projectileLifetime: 1
|
||||
throwCooldown: 2
|
||||
throwCooldown: 3
|
||||
throwSpeed: 20
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
BIN
Assets/Resources/Scripts.zip
Normal file
BIN
Assets/Resources/Scripts.zip
Normal file
Binary file not shown.
7
Assets/Resources/Scripts.zip.meta
Normal file
7
Assets/Resources/Scripts.zip.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c51629bc32dcf149a07c09736ee7cc0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Цикл привязки камеры к игроку. Ищет игрока на сцене.
|
||||
/// </summary>
|
||||
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; // подождём кадр
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для поиска объекта игрока.
|
||||
/// Сначала ищет экземпляр объекта игрока в GameManager,
|
||||
/// затем, ели не нашел, то ищет по тегу на сцене
|
||||
/// </summary>
|
||||
/// <returns>Transform playerPosition - позиция игрокка</returns>
|
||||
private Transform ResolvePlayer()
|
||||
{
|
||||
if (GameManager.Instance && GameManager.Instance.PlayerObj)
|
||||
return GameManager.Instance.PlayerObj.transform;
|
||||
|
||||
var go = GameObject.FindWithTag("Player");
|
||||
return go ? go.transform : null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для поиска игрока и привязки к нему камеры.
|
||||
/// </summary>
|
||||
/// <param name="playerFaceLeft">Повернут ли игрок налево</param>
|
||||
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)
|
||||
/// <summary>
|
||||
/// Метод для привязки камеры к игроку.
|
||||
/// </summary>
|
||||
/// <param name="playerFaceLeft">Повернут ли игрок налево</param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для броска снаряда (выстрела).
|
||||
/// У снаряда обязательно должен быть метод Launch(Vector2 direction)
|
||||
/// </summary>
|
||||
private void Throw()
|
||||
{
|
||||
float rotationY = transform.localEulerAngles.y;
|
||||
Vector2 throwDirection = rotationY >= 180f ? Vector2.right : Vector2.left;
|
||||
Collider2D enemyCol = GetComponent<Collider2D>();
|
||||
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<Collider2D>();
|
||||
|
||||
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<Collider2D>();
|
||||
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<Collider2D>();
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<Collider2D>();
|
||||
var pCol = projectile.GetComponent<Collider2D>();
|
||||
if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
|
||||
var myCol = GetComponent<Collider2D>();
|
||||
var pCol = projectile.GetComponent<Collider2D>();
|
||||
if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для броска снаряда (выстрела).
|
||||
/// У снаряда обязательно должен быть метод Launch(Vector2 direction)
|
||||
/// </summary>
|
||||
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;
|
||||
/// <summary>
|
||||
/// Метод для привязки снаряда к игроку.
|
||||
/// </summary>
|
||||
/// <param name="proj">Снаряд</param>
|
||||
public void BindProjectile(PickableProjectile proj) => pickableProjectile = proj;
|
||||
}
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class CoinController : MonoBehaviour
|
||||
{
|
||||
private void FixedUpdate()
|
||||
{
|
||||
transform.Rotate(new Vector3(0f, 5f, 0f));
|
||||
}
|
||||
}
|
||||
@ -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<Rigidbody2D>();
|
||||
animator = GetComponent<Animator>();
|
||||
[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<Rigidbody2D>();
|
||||
col = GetComponent<Collider2D>();
|
||||
animator = GetComponent<Animator>();
|
||||
|
||||
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<Rigidbody2D>();
|
||||
PlayerController playerController = playerObj.GetComponent<PlayerController>();
|
||||
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<Rigidbody2D>();
|
||||
PlayerController playerController = playerObj.GetComponent<PlayerController>();
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<bool> 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<GameObject> PlayerSpawned;
|
||||
|
||||
public event Action<int> 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<GameManager>();
|
||||
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<bool> 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<GameObject> PlayerSpawned;
|
||||
|
||||
public event Action<int> CoinsChanged;
|
||||
|
||||
//---------------------------
|
||||
// Singleton
|
||||
//---------------------------
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||||
private static void Bootstrap()
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
if (Instance == null)
|
||||
{
|
||||
var go = new GameObject(nameof(GameManager));
|
||||
Instance = go.AddComponent<GameManager>();
|
||||
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();
|
||||
// }
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск префаба игрока.
|
||||
/// Если не найдет префаб из инспектора, ищет в "Resources"
|
||||
/// </summary>
|
||||
/// <returns> Префаб игрока </returns>
|
||||
private GameObject ResolvePlayerPrefab()
|
||||
{
|
||||
if (playerPrefab != null) return playerPrefab;
|
||||
|
||||
var loaded = Resources.Load<GameObject>(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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Начало новой игры.
|
||||
/// Загружает первый уровень.
|
||||
/// Устанавливает жизни на 3, монеты на 0
|
||||
/// </summary>
|
||||
public void NewGame()
|
||||
{
|
||||
Lives = 3;
|
||||
Coins = 0;
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
LoadLevel(1, 1);
|
||||
}
|
||||
Instance = this;
|
||||
DontDestroyOnLoad(gameObject);
|
||||
|
||||
/// <summary>
|
||||
/// Окончание игры.
|
||||
/// Загружает сцену главного меню
|
||||
/// </summary>
|
||||
public void GameOver() => LoadScene("MainMenu", false);
|
||||
|
||||
/// <summary>
|
||||
/// Загрузка уровня по данным.
|
||||
/// Загружает уровень по номерам мира и уровня
|
||||
/// </summary>
|
||||
/// <param name="world">Номер мира</param>
|
||||
/// <param name="stage">Номер уровня</param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Загрузка сцены по названию.
|
||||
/// Вызывает одноименный метод в SceneManager.
|
||||
/// Может загружать сцены с UI и без.
|
||||
/// В сценах без UI игрок не спавнится
|
||||
/// </summary>
|
||||
/// <param name="sceneName">Строковое название сцены</param>
|
||||
/// <param name="useUI">Использовать ли UI</param>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для спавна игрока.
|
||||
/// Ищет первый спавнпоинт, спавнит игрока на его позиции.
|
||||
/// Если на карте есть объект игрока, удаляет его и спавнит свой
|
||||
/// </summary>
|
||||
private void TrySpawnPlayerForActiveScene()
|
||||
{
|
||||
if (!_shouldSpawnPlayer) return;
|
||||
PlayerSpawn spawn = FindFirstObjectByType<PlayerSpawn>();
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Метод переход на следующий уровень.
|
||||
/// Может загружать уровни и миры в прямой зависимости от
|
||||
/// Количества уровней на мир(StagesByWorld)
|
||||
/// </summary>
|
||||
public void NextLevel()
|
||||
{
|
||||
if (Stage >= StagesByWorld) LoadLevel(World + 1, 1);
|
||||
else LoadLevel(World, Stage + 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод сброса уровня.
|
||||
/// При сбросе также сбрасывает монеты и отнимает жизни
|
||||
/// </summary>
|
||||
public void ResetLevel()
|
||||
{
|
||||
Lives--;
|
||||
|
||||
Coins = 0;
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
|
||||
//print($"Lives: {lives}");
|
||||
if (Lives > 0) LoadLevel(World, Stage);
|
||||
else GameOver();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод добавления монеты
|
||||
/// </summary>
|
||||
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();
|
||||
// }
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск префаба игрока.
|
||||
/// Если не найдет префаб из инспектора, ищет в "Resources"
|
||||
/// </summary>
|
||||
/// <returns> Префаб игрока </returns>
|
||||
private GameObject ResolvePlayerPrefab()
|
||||
{
|
||||
if (playerPrefab != null) return playerPrefab;
|
||||
|
||||
var loaded = Resources.Load<GameObject>(playerPrefabResourcePath);
|
||||
if (loaded == null)
|
||||
{
|
||||
Debug.LogError(
|
||||
$"GameManager: playerPrefab is null. Resources.Load('{playerPrefabResourcePath}') вернул null. " +
|
||||
$"Ожидается файл: Assets/Resources/{playerPrefabResourcePath}.prefab (точное совпадение регистра).");
|
||||
}
|
||||
return loaded;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Начало новой игры.
|
||||
/// Загружает первый уровень.
|
||||
/// Устанавливает жизни на 3, монеты на 0
|
||||
/// </summary>
|
||||
public void NewGame()
|
||||
{
|
||||
Lives = 3;
|
||||
Coins = 0;
|
||||
AddLife();
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
LoadLevel(1, 1);
|
||||
}
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод паузы игры.
|
||||
/// Ставит на паузу все SFX и саму игру
|
||||
/// </summary>
|
||||
/// <param name="pause">Ставить ли на паузу</param>
|
||||
public void SetPause(bool pause)
|
||||
{
|
||||
if (IsPaused == pause) return;
|
||||
IsPaused = pause;
|
||||
// Можно заменить на другое поведение
|
||||
/// <summary>
|
||||
/// Окончание игры.
|
||||
/// Загружает сцену главного меню
|
||||
/// </summary>
|
||||
public void GameOver() => LoadScene("MainMenu", false);
|
||||
// --
|
||||
|
||||
Time.timeScale = pause ? 0f : 1f;
|
||||
AudioListener.pause = pause;
|
||||
|
||||
PauseStateChanged?.Invoke(IsPaused);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод переключателя паузы
|
||||
/// </summary>
|
||||
public void TogglePause() => SetPause(!IsPaused);
|
||||
|
||||
public void AddLife() => Lives++;
|
||||
|
||||
/// <summary>
|
||||
/// Метод проверки сцены на существование в настройках билда
|
||||
/// </summary>
|
||||
/// <param name="sceneName">Строковое название сцены</param>
|
||||
/// <returns></returns>
|
||||
private static bool SceneInBuildSettingsExists(string sceneName)
|
||||
{
|
||||
int count = SceneManager.sceneCountInBuildSettings;
|
||||
for (int i = 0; i < count; i++)
|
||||
/// <summary>
|
||||
/// Загрузка уровня по данным.
|
||||
/// Загружает уровень по номерам мира и уровня
|
||||
/// </summary>
|
||||
/// <param name="world">Номер мира</param>
|
||||
/// <param name="stage">Номер уровня</param>
|
||||
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);
|
||||
// --
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Загрузка сцены по названию.
|
||||
/// Вызывает одноименный метод в SceneManager.
|
||||
/// Может загружать сцены с UI и без.
|
||||
/// В сценах без UI игрок не спавнится
|
||||
/// </summary>
|
||||
/// <param name="sceneName">Строковое название сцены</param>
|
||||
/// <param name="useUI">Использовать ли UI</param>
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для спавна игрока.
|
||||
/// Ищет первый спавнпоинт, спавнит игрока на его позиции.
|
||||
/// Если на карте есть объект игрока, удаляет его и спавнит свой
|
||||
/// </summary>
|
||||
private void TrySpawnPlayerForActiveScene()
|
||||
{
|
||||
if (!_shouldSpawnPlayer) return;
|
||||
PlayerSpawn spawn = FindFirstObjectByType<PlayerSpawn>();
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Метод переход на следующий уровень.
|
||||
/// Может загружать уровни и миры в прямой зависимости от
|
||||
/// Количества уровней на мир(StagesByWorld)
|
||||
/// </summary>
|
||||
public void NextLevel()
|
||||
{
|
||||
if (Stage >= StagesByWorld)
|
||||
{
|
||||
World++;
|
||||
Stage = 1;
|
||||
}
|
||||
else Stage++;
|
||||
LoadLevel(World, Stage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод сброса уровня.
|
||||
/// При сбросе также сбрасывает монеты и отнимает жизни
|
||||
/// </summary>
|
||||
public void ResetLevel()
|
||||
{
|
||||
Lives--;
|
||||
|
||||
Coins = 0;
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
|
||||
//print($"Lives: {lives}");
|
||||
if (Lives > 0) LoadLevel(World, Stage);
|
||||
else GameOver();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод добавления монеты
|
||||
/// </summary>
|
||||
public void AddCoin()
|
||||
{
|
||||
Coins++;
|
||||
// Можно заменить на другое поведение
|
||||
if (Coins >= 100)
|
||||
{
|
||||
Coins = 0;
|
||||
AddLife();
|
||||
}
|
||||
// --
|
||||
CoinsChanged?.Invoke(Coins);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод паузы игры.
|
||||
/// Ставит на паузу все SFX и саму игру
|
||||
/// </summary>
|
||||
/// <param name="pause">Ставить ли на паузу</param>
|
||||
public void SetPause(bool pause)
|
||||
{
|
||||
if (IsPaused == pause) return;
|
||||
IsPaused = pause;
|
||||
|
||||
Time.timeScale = pause ? 0f : 1f;
|
||||
AudioListener.pause = pause;
|
||||
|
||||
PauseStateChanged?.Invoke(IsPaused);
|
||||
}
|
||||
|
||||
// Можно заменить на другое поведение
|
||||
/// <summary>
|
||||
/// Метод переключателя паузы
|
||||
/// </summary>
|
||||
public void TogglePause() => SetPause(!IsPaused);
|
||||
// --
|
||||
|
||||
// Можно заменить на другое поведение
|
||||
/// <summary>
|
||||
/// Метод для добавления жизни.
|
||||
/// </summary>
|
||||
public void AddLife() => Lives++;
|
||||
// --
|
||||
|
||||
/// <summary>
|
||||
/// Метод проверки сцены на существование в настройках билда
|
||||
/// </summary>
|
||||
/// <param name="sceneName">Строковое название сцены</param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Метод для загрузки элементов сцены.
|
||||
/// Вешает события на кнопки
|
||||
/// </summary>
|
||||
public void Bootstrap()
|
||||
{
|
||||
if (newGameButton) newGameButton.onClick.AddListener(OnNewGame);
|
||||
if (quitButton) quitButton.onClick.AddListener(OnQuit);
|
||||
}
|
||||
//private void Awake()
|
||||
//{
|
||||
// Bootstrap();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Метод начала новой игры
|
||||
/// </summary>
|
||||
private void OnNewGame()
|
||||
{
|
||||
private void Start()
|
||||
{
|
||||
Bootstrap();
|
||||
}
|
||||
|
||||
GameManager.Instance.NewGame();
|
||||
}
|
||||
/// <summary>
|
||||
/// Метод для загрузки элементов сцены.
|
||||
/// Вешает события на кнопки
|
||||
/// </summary>
|
||||
public void Bootstrap()
|
||||
{
|
||||
if (newGameButton) newGameButton.onClick.AddListener(OnNewGame);
|
||||
if (quitButton) quitButton.onClick.AddListener(OnQuit);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод выхода из игры
|
||||
/// </summary>
|
||||
private void OnQuit()
|
||||
{
|
||||
Application.Quit();
|
||||
/// <summary>
|
||||
/// Метод начала новой игры
|
||||
/// </summary>
|
||||
private void OnNewGame()
|
||||
{
|
||||
|
||||
GameManager.Instance.NewGame();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод выхода из игры
|
||||
/// </summary>
|
||||
private void OnQuit()
|
||||
{
|
||||
Application.Quit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
/// <summary>
|
||||
/// Обработка события паузы
|
||||
/// </summary>
|
||||
/// <param name="paused">Ставить ли на паузу</param>
|
||||
private void HandlePauseChanged(bool paused)
|
||||
{
|
||||
StopAllCoroutines();
|
||||
StartCoroutine(Fade(panel, visible ? 1f : 0f, 0.15f));
|
||||
SetVisible(paused);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для изменения отображения
|
||||
/// </summary>
|
||||
/// <param name="visible">Отображать ли менб пайзы</param>
|
||||
/// <param name="instant">Постоянно или нет</param>
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для плавного изменения видимости
|
||||
/// </summary>
|
||||
/// <param name="cg">Группа холстов</param>
|
||||
/// <param name="target">Целевое значение альфа-канала</param>
|
||||
/// <param name="duration">Продолжительность перехода</param>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для возобновления игры
|
||||
/// </summary>
|
||||
public void OnResumeClicked() => GameManager.Instance.SetPause(false);
|
||||
|
||||
//public void OnRestartClicked()
|
||||
//{
|
||||
// GameManager.Instance.SetPause(false);
|
||||
// GameManager.Instance.ResetLevel();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для выхода в главное меню
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<Rigidbody2D>();
|
||||
col = GetComponent<Collider2D>();
|
||||
rb.freezeRotation = true;
|
||||
lastJumpPressedTime = -999f;
|
||||
|
||||
// если не задано в инспекторе — находим автоматически
|
||||
if (animator == null)
|
||||
animator = GetComponent<Animator>();
|
||||
if (animator == null)
|
||||
animator = GetComponentInChildren<Animator>(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<Rigidbody2D>();
|
||||
col = GetComponent<Collider2D>();
|
||||
rb.freezeRotation = true;
|
||||
lastJumpPressedTime = -999f;
|
||||
return;
|
||||
|
||||
// если не задано в инспекторе — находим автоматически
|
||||
if (animator == null)
|
||||
animator = GetComponent<Animator>();
|
||||
if (animator == null)
|
||||
animator = GetComponentInChildren<Animator>(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");
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Метод для просчитывания скорости прыжка с учетом высоты прыжка
|
||||
/// </summary>
|
||||
/// <param name="height">Высота прыжка (высшая точка по y)</param>
|
||||
/// <returns>float jumpSpeed - высчитанная скорость прыжка</returns>
|
||||
float CalcJumpSpeed(float height)
|
||||
{
|
||||
float g = Physics2D.gravity.y * rb.gravityScale;
|
||||
|
||||
return Mathf.Sqrt(-2f * g * height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для проверки соприкосновения с землей
|
||||
/// </summary>
|
||||
/// <returns>bool isGrounded - на земле ли игрок</returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод смерти персонажа.
|
||||
/// Базовое поведение - сброс уровня в GameManager
|
||||
/// </summary>
|
||||
public void Die()
|
||||
{
|
||||
GameManager.Instance.ResetLevel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<Health>();
|
||||
//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<PlayerController>().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<Health>();
|
||||
//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<PlayerController>().Die();
|
||||
else if (target.collider.CompareTag("Projectile") || target.collider.CompareTag("Enemy"))
|
||||
Despawn();
|
||||
|
||||
base.OnHit(target, point, relativeVelocity);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<PlayerFireScript>();
|
||||
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<PlayerFireScript>();
|
||||
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)
|
||||
/// <summary>
|
||||
/// Метод для подбора снаряда игроком.
|
||||
/// Привязывает снаряд к точке привязки на игроке.
|
||||
/// </summary>
|
||||
/// <param name="newHolder">Держатель снаряда</param>
|
||||
/// <param name="optionalAttachPoint">Опциональная точка привязки. При передаче, снаряд будет привязан на нее</param>
|
||||
/// <returns>bool isPickedUp - получилось ли поднять снаряд</returns>
|
||||
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<PlayerFireScript>();
|
||||
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
|
||||
|
||||
/// <summary>
|
||||
/// Метод для получения точки привязки на игроке.
|
||||
/// </summary>
|
||||
/// <param name="holder">Игрок, который держит снаряд</param>
|
||||
/// <param name="preferred">Опциональная точка привязки. При передаче, снаряд будет привязан на нее</param>
|
||||
/// <returns>Transform attachPoint - точкка привязки</returns>
|
||||
private Transform ResolveAttachPoint(GameObject holder, Transform preferred = null)
|
||||
{
|
||||
if (preferred) return preferred;
|
||||
|
||||
PlayerFireScript fireScript = holder.GetComponent<PlayerFireScript>();
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для просчета отскоков.
|
||||
/// </summary>
|
||||
/// <param name="collision">Коллизия, с которой столкнулся снаряд</param>
|
||||
/// <returns>bool isBounced - произошел ли отскок</returns>
|
||||
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;
|
||||
/// <summary>
|
||||
/// Метод для заморозки снаряда на земле.
|
||||
/// </summary>
|
||||
/// <param name="collision">Коллизия, с которой столкнулся снаряд</param>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для поиска точки привязки на игроке.
|
||||
/// </summary>
|
||||
/// <param name="owner">Объект игрока</param>
|
||||
/// <returns>Transform attachPoint - точка привязки</returns>
|
||||
private Transform FindAttachPoint(GameObject owner)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(attachPointChildName)) return null;
|
||||
var ownerTransform = owner.transform.Find(attachPointChildName);
|
||||
return ownerTransform;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод для обработки возвращения снаряда к игроку.
|
||||
/// При возвращении снаряд игнорирует любые коллизии.
|
||||
/// </summary>
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<Rigidbody2D>();
|
||||
@ -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<Collider2D>();
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="direction"></param>
|
||||
/// <param name="speed"></param>
|
||||
/// <param name="owner"></param>
|
||||
/// <param name="ignoreOwnerTime"></param>
|
||||
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));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="who"></param>
|
||||
/// <param name="time"></param>
|
||||
protected virtual IEnumerator IgnoreOwnerTemporarily(GameObject who, float time)
|
||||
{
|
||||
Collider2D[] ownerColliders = who.GetComponentsInChildren<Collider2D>();
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="layer"></param>
|
||||
/// <returns></returns>
|
||||
protected bool IsInHitLayer(int layer)
|
||||
{
|
||||
return ((1 << layer) & hitLayers.value) != 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="target"></param>
|
||||
/// <param name="point"></param>
|
||||
/// <param name="relativeVelocity"></param>
|
||||
/// <param name="isTriggerEvent"></param>
|
||||
/// <param name="collision"></param>
|
||||
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)
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="target"></param>
|
||||
/// <param name="hitPoint"></param>
|
||||
/// <param name="relativeVelocity"></param>
|
||||
protected virtual void TryDealDamage(Collider2D target, Vector2 hitPoint, Vector2 relativeVelocity)
|
||||
{
|
||||
var dmg = target.GetComponentInParent<IDamageable2D>();
|
||||
if (dmg != null)
|
||||
//var dmg = target.GetComponentInParent<IDamageable2D>();
|
||||
//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);
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="collision"></param>
|
||||
/// <param name="point"></param>
|
||||
/// <param name="relativeVelocity"></param>
|
||||
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) { }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="collision"></param>
|
||||
protected virtual void OnImpactFinal(Collision2D collision) => Despawn();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="other"></param>
|
||||
protected virtual void OnImpactFinal(Collider2D other) => Despawn();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public virtual void Despawn()
|
||||
{
|
||||
Destroy(gameObject);
|
||||
|
||||
12
Assets/Resources/Scripts/Rotator.cs
Normal file
12
Assets/Resources/Scripts/Rotator.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace RR.Game2D.Behaviour
|
||||
{
|
||||
public class CoinController : MonoBehaviour
|
||||
{
|
||||
private void FixedUpdate()
|
||||
{
|
||||
transform.Rotate(new Vector3(0f, 5f, 0f));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<PlayerFireScript>();
|
||||
//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
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfcb58e623aec0347a14faffcc5b438c
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Assets/Resources/Sprites/Sky.png
Normal file
BIN
Assets/Resources/Sprites/Sky.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
156
Assets/Resources/Sprites/Sky.png.meta
Normal file
156
Assets/Resources/Sprites/Sky.png.meta
Normal file
@ -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:
|
||||
@ -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:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user