From b288b4582b365d837e9b2ff87ba4cfee0c167598 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sat, 7 Nov 2020 16:16:03 +0100 Subject: [PATCH] Organization, platform spawner, config --- Assembly-CSharp.csproj | 1 + Assets/Scenes/SampleScene.unity | 413 +++++++++++++++++- Assets/Scripts/OwnCharacterController.cs | 10 +- Assets/Scripts/PlatformSpawner.cs | 39 ++ Assets/Scripts/PlatformSpawner.cs.meta | 11 + Assets/Sprites/Background.meta | 8 + .../bgElements_spritesheet.png | Bin .../bgElements_spritesheet.png.meta | 0 .../Sprites/{ => Background}/cloudLayer1.png | Bin .../{ => Background}/cloudLayer1.png.meta | 0 .../Sprites/{ => Background}/cloudLayer2.png | Bin .../{ => Background}/cloudLayer2.png.meta | 0 .../Sprites/{ => Background}/cloudLayerB1.png | Bin .../{ => Background}/cloudLayerB1.png.meta | 0 .../Sprites/{ => Background}/cloudLayerB2.png | Bin .../{ => Background}/cloudLayerB2.png.meta | 0 .../Sprites/{ => Background}/groundLayer1.png | Bin .../{ => Background}/groundLayer1.png.meta | 0 .../Sprites/{ => Background}/groundLayer2.png | Bin .../{ => Background}/groundLayer2.png.meta | 0 Assets/Sprites/{ => Background}/hills.png | Bin .../Sprites/{ => Background}/hills.png.meta | 0 .../Sprites/{ => Background}/hillsLarge.png | Bin .../{ => Background}/hillsLarge.png.meta | 0 Assets/Sprites/{ => Background}/mountainA.png | Bin .../{ => Background}/mountainA.png.meta | 0 Assets/Sprites/{ => Background}/mountainB.png | Bin .../{ => Background}/mountainB.png.meta | 0 Assets/Sprites/{ => Background}/mountainC.png | Bin .../{ => Background}/mountainC.png.meta | 0 Assets/Sprites/{ => Background}/mountains.png | Bin .../{ => Background}/mountains.png.meta | 0 Assets/Sprites/grass.png | Bin 0 -> 1456 bytes Assets/Sprites/grass.png.meta | 92 ++++ Assets/Sprites/grassCliffLeft.png | Bin 0 -> 1591 bytes Assets/Sprites/grassCliffLeft.png.meta | 92 ++++ Assets/Sprites/grassCliffRight.png | Bin 0 -> 1552 bytes Assets/Sprites/grassCliffRight.png.meta | 92 ++++ Assets/Sprites/grassMid.png | Bin 0 -> 1201 bytes Assets/Sprites/grassMid.png.meta | 92 ++++ 40 files changed, 835 insertions(+), 15 deletions(-) create mode 100644 Assets/Scripts/PlatformSpawner.cs create mode 100644 Assets/Scripts/PlatformSpawner.cs.meta create mode 100644 Assets/Sprites/Background.meta rename Assets/Sprites/{ => Background}/bgElements_spritesheet.png (100%) rename Assets/Sprites/{ => Background}/bgElements_spritesheet.png.meta (100%) rename Assets/Sprites/{ => Background}/cloudLayer1.png (100%) rename Assets/Sprites/{ => Background}/cloudLayer1.png.meta (100%) rename Assets/Sprites/{ => Background}/cloudLayer2.png (100%) rename Assets/Sprites/{ => Background}/cloudLayer2.png.meta (100%) rename Assets/Sprites/{ => Background}/cloudLayerB1.png (100%) rename Assets/Sprites/{ => Background}/cloudLayerB1.png.meta (100%) rename Assets/Sprites/{ => Background}/cloudLayerB2.png (100%) rename Assets/Sprites/{ => Background}/cloudLayerB2.png.meta (100%) rename Assets/Sprites/{ => Background}/groundLayer1.png (100%) rename Assets/Sprites/{ => Background}/groundLayer1.png.meta (100%) rename Assets/Sprites/{ => Background}/groundLayer2.png (100%) rename Assets/Sprites/{ => Background}/groundLayer2.png.meta (100%) rename Assets/Sprites/{ => Background}/hills.png (100%) rename Assets/Sprites/{ => Background}/hills.png.meta (100%) rename Assets/Sprites/{ => Background}/hillsLarge.png (100%) rename Assets/Sprites/{ => Background}/hillsLarge.png.meta (100%) rename Assets/Sprites/{ => Background}/mountainA.png (100%) rename Assets/Sprites/{ => Background}/mountainA.png.meta (100%) rename Assets/Sprites/{ => Background}/mountainB.png (100%) rename Assets/Sprites/{ => Background}/mountainB.png.meta (100%) rename Assets/Sprites/{ => Background}/mountainC.png (100%) rename Assets/Sprites/{ => Background}/mountainC.png.meta (100%) rename Assets/Sprites/{ => Background}/mountains.png (100%) rename Assets/Sprites/{ => Background}/mountains.png.meta (100%) create mode 100644 Assets/Sprites/grass.png create mode 100644 Assets/Sprites/grass.png.meta create mode 100644 Assets/Sprites/grassCliffLeft.png create mode 100644 Assets/Sprites/grassCliffLeft.png.meta create mode 100644 Assets/Sprites/grassCliffRight.png create mode 100644 Assets/Sprites/grassCliffRight.png.meta create mode 100644 Assets/Sprites/grassMid.png create mode 100644 Assets/Sprites/grassMid.png.meta diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 629f45b..85c76a9 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -61,6 +61,7 @@ + diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 5f12fe3..2964803 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -121,6 +121,277 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &219260671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 219260672} + - component: {fileID: 219260673} + m_Layer: 0 + m_Name: GameManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &219260672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219260671} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.23012455, y: 3.2188933, z: -23.273745} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &219260673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219260671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee409c97d3c47248aa00378547f85278, type: 3} + m_Name: + m_EditorClassIdentifier: + platformLeft: {fileID: 887921231} + platformMiddle: {fileID: 407879045} + platformRight: {fileID: 413955008} + player: {fileID: 2053847422} + maxSize: 5 +--- !u!1 &407879043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 407879045} + - component: {fileID: 407879044} + - component: {fileID: 407879046} + m_Layer: 0 + m_Name: PlatformMid + m_TagString: Ground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &407879044 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 407879043} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 277681d38786cd38fb431511c081d3a3, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.7, y: 0.7} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &407879045 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 407879043} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.7, y: 2.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &407879046 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 407879043} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.7, y: 0.7} + newSize: {x: 0.7, y: 0.7} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.7, y: 0.7} + m_EdgeRadius: 0 +--- !u!1 &413955006 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 413955008} + - component: {fileID: 413955007} + - component: {fileID: 413955009} + m_Layer: 0 + m_Name: PlatformRight + m_TagString: Ground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &413955007 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413955006} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 3d88c48f0ac5f1b76a9b63a3c4f97dd6, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.7, y: 0.7} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &413955008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413955006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.4, y: 2.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!60 &413955009 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413955006} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.7, y: 0.7} + newSize: {x: 0.7, y: 0.7} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -0.35, y: 0.35} + - {x: -0.35, y: -0.35} + - {x: -0.021993905, y: -0.2905682} + - {x: 0.22573361, y: -0.16113642} + - {x: 0.3280517, y: -0.009914637} + - {x: 0.3570025, y: 0.12124181} + - {x: 0.328475, y: 0.32086563} + - {x: 0.23113629, y: 0.34999976} --- !u!1 &416234157 GameObject: m_ObjectHideFlags: 0 @@ -202,7 +473,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &416234160 MonoBehaviour: @@ -236,6 +507,121 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: smoothing: 1 +--- !u!1 &887921229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 887921231} + - component: {fileID: 887921230} + - component: {fileID: 887921232} + m_Layer: 0 + m_Name: PlatformLeft + m_TagString: Ground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &887921230 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887921229} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 53c010de1631b4bd7aab9bc8bff49cd1, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.7, y: 0.7} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &887921231 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887921229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 2.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!60 &887921232 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887921229} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.7, y: 0.7} + newSize: {x: 0.7, y: 0.7} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -0.28193402, y: 0.33931836} + - {x: -0.3446593, y: 0.30261526} + - {x: -0.35751337, y: 0.15566969} + - {x: -0.32897726, y: -0.008648053} + - {x: -0.15077958, y: -0.21121931} + - {x: 0.031678874, y: -0.2983211} + - {x: 0.35, y: -0.35} + - {x: 0.35, y: 0.35} --- !u!1 &996257474 GameObject: m_ObjectHideFlags: 0 @@ -317,7 +703,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &996257477 MonoBehaviour: @@ -394,7 +780,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1043406433 GameObject: @@ -526,7 +912,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1070284626 MonoBehaviour: @@ -621,7 +1007,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 10 + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1351818047 GameObject: @@ -803,7 +1189,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1372634519 MonoBehaviour: @@ -917,7 +1303,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!68 &1508769556 EdgeCollider2D: @@ -1057,7 +1443,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 11 + m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1692511763 GameObject: @@ -1083,11 +1469,11 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1692511763} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 2.27, y: 2.74, z: -2.796909} + m_LocalPosition: {x: 2.27, y: 3.93, z: -2.796909} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2051666664 GameObject: @@ -1118,7 +1504,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!58 &2051666666 CircleCollider2D: @@ -1222,7 +1608,7 @@ Transform: m_Children: - {fileID: 1043406434} m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!50 &2053847423 Rigidbody2D: @@ -1283,6 +1669,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 216ec793de06a4ac7a9767782a179419, type: 3} m_Name: m_EditorClassIdentifier: + jumpForce: 5 + movementSpeed: 5 + sprintSpeed: 15 --- !u!114 &2053847426 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/OwnCharacterController.cs b/Assets/Scripts/OwnCharacterController.cs index 1514227..8adbb8a 100644 --- a/Assets/Scripts/OwnCharacterController.cs +++ b/Assets/Scripts/OwnCharacterController.cs @@ -7,6 +7,10 @@ using Random = System.Random; public class OwnCharacterController : MonoBehaviour { + public float jumpForce; + public float movementSpeed; + public float sprintSpeed; + private Rigidbody2D _rb; private Vector3 _spawnPos; private float _health = 100f; @@ -35,11 +39,11 @@ public class OwnCharacterController : MonoBehaviour } if (Input.GetButton("Fire3")) - input *= 10; - _rb.AddForce(new Vector2(input * 5, 0)); + input *= sprintSpeed; + _rb.AddForce(new Vector2(input * movementSpeed, 0)); if (Input.GetButtonDown("Jump") && IsOnGround()) - _rb.AddForce(new Vector2(0, 4), ForceMode2D.Impulse); + _rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse); } public void Hit() diff --git a/Assets/Scripts/PlatformSpawner.cs b/Assets/Scripts/PlatformSpawner.cs new file mode 100644 index 0000000..dbac7bc --- /dev/null +++ b/Assets/Scripts/PlatformSpawner.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Random = System.Random; + +public class PlatformSpawner : MonoBehaviour +{ + public Transform platformLeft; + public Transform platformMiddle; + public Transform platformRight; + public Transform player; + public int maxSize = 5; + + private Vector3 _spawnDiff; + private int _level = 0; + private Random _random = new Random(); + private Vector3 _lastPlatformPos; + // Start is called before the first frame update + void Start() + { + _spawnDiff = platformLeft.position - player.position; + _lastPlatformPos = platformRight.position; + } + + // Update is called once per frame + void FixedUpdate() + { + //If next platform is closer than _spawnDiff + if (player.position.x + _spawnDiff.x <= _lastPlatformPos.x) + return; + int size = _random.Next(maxSize); + Vector3 pos = _lastPlatformPos; + Instantiate(platformLeft).position = pos += new Vector3(1, 0, 0); + for (int i = 0; i < size; i++) + Instantiate(platformMiddle).position = pos += new Vector3(0.7f, 0, 0); + Instantiate(platformRight).position = pos += new Vector3(0.7f, 0, 0); + _lastPlatformPos = pos; + } +} diff --git a/Assets/Scripts/PlatformSpawner.cs.meta b/Assets/Scripts/PlatformSpawner.cs.meta new file mode 100644 index 0000000..0bfde7f --- /dev/null +++ b/Assets/Scripts/PlatformSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee409c97d3c47248aa00378547f85278 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/Background.meta b/Assets/Sprites/Background.meta new file mode 100644 index 0000000..4dc0a8e --- /dev/null +++ b/Assets/Sprites/Background.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05fcc8b01cf111536ae4859dd25adc82 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/bgElements_spritesheet.png b/Assets/Sprites/Background/bgElements_spritesheet.png similarity index 100% rename from Assets/Sprites/bgElements_spritesheet.png rename to Assets/Sprites/Background/bgElements_spritesheet.png diff --git a/Assets/Sprites/bgElements_spritesheet.png.meta b/Assets/Sprites/Background/bgElements_spritesheet.png.meta similarity index 100% rename from Assets/Sprites/bgElements_spritesheet.png.meta rename to Assets/Sprites/Background/bgElements_spritesheet.png.meta diff --git a/Assets/Sprites/cloudLayer1.png b/Assets/Sprites/Background/cloudLayer1.png similarity index 100% rename from Assets/Sprites/cloudLayer1.png rename to Assets/Sprites/Background/cloudLayer1.png diff --git a/Assets/Sprites/cloudLayer1.png.meta b/Assets/Sprites/Background/cloudLayer1.png.meta similarity index 100% rename from Assets/Sprites/cloudLayer1.png.meta rename to Assets/Sprites/Background/cloudLayer1.png.meta diff --git a/Assets/Sprites/cloudLayer2.png b/Assets/Sprites/Background/cloudLayer2.png similarity index 100% rename from Assets/Sprites/cloudLayer2.png rename to Assets/Sprites/Background/cloudLayer2.png diff --git a/Assets/Sprites/cloudLayer2.png.meta b/Assets/Sprites/Background/cloudLayer2.png.meta similarity index 100% rename from Assets/Sprites/cloudLayer2.png.meta rename to Assets/Sprites/Background/cloudLayer2.png.meta diff --git a/Assets/Sprites/cloudLayerB1.png b/Assets/Sprites/Background/cloudLayerB1.png similarity index 100% rename from Assets/Sprites/cloudLayerB1.png rename to Assets/Sprites/Background/cloudLayerB1.png diff --git a/Assets/Sprites/cloudLayerB1.png.meta b/Assets/Sprites/Background/cloudLayerB1.png.meta similarity index 100% rename from Assets/Sprites/cloudLayerB1.png.meta rename to Assets/Sprites/Background/cloudLayerB1.png.meta diff --git a/Assets/Sprites/cloudLayerB2.png b/Assets/Sprites/Background/cloudLayerB2.png similarity index 100% rename from Assets/Sprites/cloudLayerB2.png rename to Assets/Sprites/Background/cloudLayerB2.png diff --git a/Assets/Sprites/cloudLayerB2.png.meta b/Assets/Sprites/Background/cloudLayerB2.png.meta similarity index 100% rename from Assets/Sprites/cloudLayerB2.png.meta rename to Assets/Sprites/Background/cloudLayerB2.png.meta diff --git a/Assets/Sprites/groundLayer1.png b/Assets/Sprites/Background/groundLayer1.png similarity index 100% rename from Assets/Sprites/groundLayer1.png rename to Assets/Sprites/Background/groundLayer1.png diff --git a/Assets/Sprites/groundLayer1.png.meta b/Assets/Sprites/Background/groundLayer1.png.meta similarity index 100% rename from Assets/Sprites/groundLayer1.png.meta rename to Assets/Sprites/Background/groundLayer1.png.meta diff --git a/Assets/Sprites/groundLayer2.png b/Assets/Sprites/Background/groundLayer2.png similarity index 100% rename from Assets/Sprites/groundLayer2.png rename to Assets/Sprites/Background/groundLayer2.png diff --git a/Assets/Sprites/groundLayer2.png.meta b/Assets/Sprites/Background/groundLayer2.png.meta similarity index 100% rename from Assets/Sprites/groundLayer2.png.meta rename to Assets/Sprites/Background/groundLayer2.png.meta diff --git a/Assets/Sprites/hills.png b/Assets/Sprites/Background/hills.png similarity index 100% rename from Assets/Sprites/hills.png rename to Assets/Sprites/Background/hills.png diff --git a/Assets/Sprites/hills.png.meta b/Assets/Sprites/Background/hills.png.meta similarity index 100% rename from Assets/Sprites/hills.png.meta rename to Assets/Sprites/Background/hills.png.meta diff --git a/Assets/Sprites/hillsLarge.png b/Assets/Sprites/Background/hillsLarge.png similarity index 100% rename from Assets/Sprites/hillsLarge.png rename to Assets/Sprites/Background/hillsLarge.png diff --git a/Assets/Sprites/hillsLarge.png.meta b/Assets/Sprites/Background/hillsLarge.png.meta similarity index 100% rename from Assets/Sprites/hillsLarge.png.meta rename to Assets/Sprites/Background/hillsLarge.png.meta diff --git a/Assets/Sprites/mountainA.png b/Assets/Sprites/Background/mountainA.png similarity index 100% rename from Assets/Sprites/mountainA.png rename to Assets/Sprites/Background/mountainA.png diff --git a/Assets/Sprites/mountainA.png.meta b/Assets/Sprites/Background/mountainA.png.meta similarity index 100% rename from Assets/Sprites/mountainA.png.meta rename to Assets/Sprites/Background/mountainA.png.meta diff --git a/Assets/Sprites/mountainB.png b/Assets/Sprites/Background/mountainB.png similarity index 100% rename from Assets/Sprites/mountainB.png rename to Assets/Sprites/Background/mountainB.png diff --git a/Assets/Sprites/mountainB.png.meta b/Assets/Sprites/Background/mountainB.png.meta similarity index 100% rename from Assets/Sprites/mountainB.png.meta rename to Assets/Sprites/Background/mountainB.png.meta diff --git a/Assets/Sprites/mountainC.png b/Assets/Sprites/Background/mountainC.png similarity index 100% rename from Assets/Sprites/mountainC.png rename to Assets/Sprites/Background/mountainC.png diff --git a/Assets/Sprites/mountainC.png.meta b/Assets/Sprites/Background/mountainC.png.meta similarity index 100% rename from Assets/Sprites/mountainC.png.meta rename to Assets/Sprites/Background/mountainC.png.meta diff --git a/Assets/Sprites/mountains.png b/Assets/Sprites/Background/mountains.png similarity index 100% rename from Assets/Sprites/mountains.png rename to Assets/Sprites/Background/mountains.png diff --git a/Assets/Sprites/mountains.png.meta b/Assets/Sprites/Background/mountains.png.meta similarity index 100% rename from Assets/Sprites/mountains.png.meta rename to Assets/Sprites/Background/mountains.png.meta diff --git a/Assets/Sprites/grass.png b/Assets/Sprites/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2b7fdd39321cb77c3d3912150dcae2fb64b1eb GIT binary patch literal 1456 zcmV;h1yA~kP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1w~0jK~#8N?c7gm zBt;m<@qP!sgxPH3&6^-zJO~P2Jcxp@tp8ASg9l$iR-?H8bk^Cp8&OyU5pRMQL1p8z zo9wvAiWd(X|Gb2}gtmX3{tY!XPjx+2^~@#H4POFXoucY9lbPudQu)Uh|D1kg=kN8` zCWjm2YljdI)?dU@^Jko zFZ|@s)Afb>YxRfwr`opfjOz2ZPDa=Z_k}%TuQQ;=pyN0`x*wbR;_qwq`+M?)CpqjH zdv9?Xixy?)-?b4=d^|lRe$y%i16aVMeYW5!C0)3R!J>WEjQ?8SlP*~0U{YOrFg#oQ zU{c}LSsGmBU{Xl~L!$vE)BqDG3FhlBAFnU}@TfRe+VyWAYm>%G!%NaU~XiMgSBGKm>YYLu8~r~5QSOdxG2mD$3=*QC@d96i^5WHv?xr2)54^pFfC3h3e(`EqOcfFm5ah+ zIJqdS4<{Fe_2E>DD9_e+uDmQx6e@)C-L)s@&LJ(ho3sJUU4p`}SM1rH2PTz!A_s*@ zIDR=OOu})?L17Y(1Cx)!`fy56SO}*Ch50xgOgRdZa4b-mk7I$tT$~0*k8*G4&3gap ztKyiOi=#z3n7rO5jrkErjnb^SUAr{qMVv~H@>c!Z?q)r`aZZhM`_fC|m>)neH&Wv? zb8AtsX3UK}h}U?*q>={wh{Ciunp_m7#fj#iFfC3L#z$cmI1&mg#t~4M2B#M$gu+U2 z`cPOlP7ex;;RIn~C@cp@gTj(=6ez3@M}(PPe_Na=R0@t3+%5L#&PqUG*sCJ`@(i3BqVlSSpSNg{9(XP*@+%0t`M)rl2q_PR`u1N0+6b%nICA%)#IS z{{}Fn7)}lfi{WIUFac)15BVK80}v>#{z{d;25AV7{H=M;W6DkcT>7JH{w{Luo;da3W7n$F@H>V-+8aO;K=`m+^_-Z zyhX-;?Qn#>cMS6J;H!5>_jfnPjoyF41Scx&5qrg+yX|*JRs9bxAI7euNX?c20000< KMNUMnLSTZS$e7Il literal 0 HcmV?d00001 diff --git a/Assets/Sprites/grass.png.meta b/Assets/Sprites/grass.png.meta new file mode 100644 index 0000000..04dc05a --- /dev/null +++ b/Assets/Sprites/grass.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: f35f4c00a8e280778b7dc11be457b4ac +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/grassCliffLeft.png b/Assets/Sprites/grassCliffLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..68353e83301c242ace36e5183314d487f1bf93c8 GIT binary patch literal 1591 zcmV-72FUq|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1Lpk2kFOS~gq}Lmj!`d>HjW#^7#qVF@`Cx{yBE@HzdR@ItJ=m-&*w?|szz(3wM+X< zIm7&T=f(8*%de%suDlW*hd^jX}TNIAg(1;xZsQBW)#6$QECSYdP& z6az;>K~-@i6y$bX7C^}aXWDREARp1(|TFpdcNGu9#K~6eQuq zKtVcA3>2i|WH4{kT~YSdKS?{^d?fBuQ*m5Tb{iM+q6xs-PAEIQ-dyZWBEPme%oZps-ao7)wI)=YELIf%z-5l#m4;dyDN8c>ic zj!P;Ea>cQxpdeSA{3}{%2hvec3>*msRmKrekPA)@)2`QA(oPc!s)AF7f`V~MP>>BL zhspkBS>ItpK_NIUD99Vf0R@%e6foCkC)JIvD98uLcW%n|x7*7D1$8$rigV>KG&=RU zhqNJN;gkzb=-iYQCjbRWILwmdkL@Z8r^;}u&P^F{Dxe@8hgp*3{`a3vN`JsN2`2^$ z>cfeEf>a!4DMq$)TR%7?6(=SN>fuC0LBL^>VjO(CbY40*BwFy^?f58&=8lbm2!}}? zjc#+XB^^9!F~_43^Qsx7}_88F(br3gdiq=ePm-d-r zivF>`xwxzzsQzjm8%KQv$Hu`^hVpqU!VL1r4mhGazw~}37LJO7V&SML$Q6ePMvg2M#n(OH{)Tbdk&;*_DFP@FOpWW(XpFCXo-xp`@FojuQn1DL8zp{)3)Y?Rw4nD36JPfD;u3 zF%F+**eE_Lo;wnMK-TWf_$X+Qa}y4qV)!^*eSadGY`bsrA&*b5`Y3)8EIv?w7UI*2 zGwABEJ<^9IKBc&Wz7IEjyJ?DUsDrpsBcI>4DL$3KjN-9wzBwcH5j+SSJRyCaVtfjN z9SkJie^it~-~a`=;_%WR&mbW6B_^Su7&tl#a>3yxKi;u(qjs*-nBU44+4u3OS`{1< z3bNtwQlH$|-&~r{7Ha&W&l`t+bKO`F=h7>~;pIK~akzPLqT5`!)NL+4)K9<}M|&ga zk_m^G^>mH>=E6DtFur#sS#bhTkc7iad3pz3N%V5duB5Hb%?t9I)(R*{$KfA8JcIvd zO8QJ_JAZc{0R^cz{Nsjq(916WS~+{^(N!hgqkIAmPyg%im`Sk&a-BaCn;0 p8T4IQ4wgkvLB7&jjK?@j>HiQX#!K?IpF#it002ovPDHLkV1nOn-7x?F literal 0 HcmV?d00001 diff --git a/Assets/Sprites/grassCliffLeft.png.meta b/Assets/Sprites/grassCliffLeft.png.meta new file mode 100644 index 0000000..84f9005 --- /dev/null +++ b/Assets/Sprites/grassCliffLeft.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 53c010de1631b4bd7aab9bc8bff49cd1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/grassCliffRight.png b/Assets/Sprites/grassCliffRight.png new file mode 100644 index 0000000000000000000000000000000000000000..a629213901c441bd99cd1411df977686a7757f6e GIT binary patch literal 1552 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 f{qX;crT@A87TfDHa%+?Wix~z_S3j3^P6