]> git.cameronkatri.com Git - gmtk-gamejam.git/commitdiff
Restructure scripts, improve locomotion, and add movement indicators
authorCarson Katri <carson.katri@gmail.com>
Sat, 12 Jun 2021 04:30:21 +0000 (00:30 -0400)
committerCarson Katri <carson.katri@gmail.com>
Sat, 12 Jun 2021 04:30:21 +0000 (00:30 -0400)
18 files changed:
Assets/Materials/Player.physicsMaterial2D [new file with mode: 0644]
Assets/Materials/Player.physicsMaterial2D.meta [new file with mode: 0644]
Assets/Prefabs/Player.prefab
Assets/Scenes/Main.unity
Assets/Scripts/AIController.cs [deleted file]
Assets/Scripts/Controllers.meta [new file with mode: 0644]
Assets/Scripts/Controllers/AIController.cs [new file with mode: 0644]
Assets/Scripts/Controllers/AIController.cs.meta [moved from Assets/Scripts/AIController.cs.meta with 100% similarity]
Assets/Scripts/Controllers/CameraController.cs [new file with mode: 0644]
Assets/Scripts/Controllers/CameraController.cs.meta [new file with mode: 0644]
Assets/Scripts/Controllers/Player.meta [new file with mode: 0644]
Assets/Scripts/Controllers/Player/PlayerController.cs [new file with mode: 0644]
Assets/Scripts/Controllers/Player/PlayerController.cs.meta [moved from Assets/Scripts/PlayerController.cs.meta with 100% similarity]
Assets/Scripts/Controllers/Player/PlayerSegment.cs [new file with mode: 0644]
Assets/Scripts/Controllers/Player/PlayerSegment.cs.meta [new file with mode: 0644]
Assets/Scripts/PlayerController.cs [deleted file]
Assets/Sprites/Buttons.png [new file with mode: 0644]
Assets/Sprites/Buttons.png.meta [new file with mode: 0644]

diff --git a/Assets/Materials/Player.physicsMaterial2D b/Assets/Materials/Player.physicsMaterial2D
new file mode 100644 (file)
index 0000000..f5cc0d0
--- /dev/null
@@ -0,0 +1,11 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!62 &6200000
+PhysicsMaterial2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Player
+  friction: 0.2
+  bounciness: 0
diff --git a/Assets/Materials/Player.physicsMaterial2D.meta b/Assets/Materials/Player.physicsMaterial2D.meta
new file mode 100644 (file)
index 0000000..61858c9
--- /dev/null
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0510edd53d4374d57a2f5a5cc7c40766
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 6200000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
index 725faff73eb560ba5c45ed2ed71ae2243acd8163..4b9238951e331998057a8095cdeb993af34e1eb0 100644 (file)
@@ -1,5 +1,251 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &476429766403681147
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1299794603187148047}
+  - component: {fileID: 8177603981592965145}
+  m_Layer: 0
+  m_Name: RightArrow
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &1299794603187148047
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 476429766403681147}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 1.5, y: 0, z: 0}
+  m_LocalScale: {x: 6, y: 3, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6095859832867562448}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &8177603981592965145
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 476429766403681147}
+  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_RayTraceProcedural: 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: 2013261503205373015, guid: 4c50c736e129f4891bb6f68b964d823d, 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.14, y: 0.14}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!1 &5020703169596630212
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5614014003094209757}
+  - component: {fileID: 9153823608011860787}
+  m_Layer: 0
+  m_Name: LeftArrow
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &5614014003094209757
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5020703169596630212}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -1.5, y: 0, z: 0}
+  m_LocalScale: {x: 6, y: 3, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6095859832867562448}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &9153823608011860787
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5020703169596630212}
+  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_RayTraceProcedural: 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: -5402412272178277761, guid: 4c50c736e129f4891bb6f68b964d823d, 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.14, y: 0.14}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!1 &5321565721314628342
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1077578955052460591}
+  - component: {fileID: 3996879309566229940}
+  m_Layer: 0
+  m_Name: A
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &1077578955052460591
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5321565721314628342}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -1.5, y: 0, z: 0}
+  m_LocalScale: {x: 6, y: 3, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6095859833589646295}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &3996879309566229940
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5321565721314628342}
+  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_RayTraceProcedural: 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: 8894201953851282084, guid: 4c50c736e129f4891bb6f68b964d823d, 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.14, y: 0.14}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
 --- !u!1 &6095859832867562451
 GameObject:
   m_ObjectHideFlags: 0
@@ -9,6 +255,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 6095859832867562448}
+  - component: {fileID: 6967752935869289387}
   - component: {fileID: 6095859832867562449}
   - component: {fileID: 6095859832867562452}
   - component: {fileID: 6095859832867562454}
@@ -30,10 +277,31 @@ Transform:
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 1.3, z: 0}
   m_LocalScale: {x: 0.5, y: 1, z: 1}
-  m_Children: []
+  m_Children:
+  - {fileID: 5614014003094209757}
+  - {fileID: 1299794603187148047}
   m_Father: {fileID: 6095859834264611321}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6967752935869289387
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6095859832867562451}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 99303295fe534f42863cd15bf22587f9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  left:
+    keyCode: 276
+    icon: {fileID: 5020703169596630212}
+  right:
+    keyCode: 275
+    icon: {fileID: 476429766403681147}
+  forceOrigin: {x: 0, y: 0.5, z: 0}
 --- !u!212 &6095859832867562449
 SpriteRenderer:
   m_ObjectHideFlags: 0
@@ -131,7 +399,7 @@ BoxCollider2D:
   m_AutoTiling: 0
   serializedVersion: 2
   m_Size: {x: 1, y: 1}
-  m_EdgeRadius: 0
+  m_EdgeRadius: 0.05
 --- !u!233 &6095859832867562455
 HingeJoint2D:
   m_ObjectHideFlags: 0
@@ -175,7 +443,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &6095859833293776206
 Transform:
   m_ObjectHideFlags: 0
@@ -287,7 +555,7 @@ BoxCollider2D:
   m_AutoTiling: 0
   serializedVersion: 2
   m_Size: {x: 1, y: 1}
-  m_EdgeRadius: 0
+  m_EdgeRadius: 0.05
 --- !u!233 &6095859833293776203
 HingeJoint2D:
   m_ObjectHideFlags: 0
@@ -321,6 +589,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 6095859833589646295}
+  - component: {fileID: 6063944130433637649}
   - component: {fileID: 6095859833589646293}
   - component: {fileID: 6095859833589646292}
   - component: {fileID: 6095859833589646298}
@@ -341,10 +610,31 @@ Transform:
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 0.5, y: 1, z: 1}
-  m_Children: []
+  m_Children:
+  - {fileID: 1077578955052460591}
+  - {fileID: 7020633736805051563}
   m_Father: {fileID: 6095859834264611321}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6063944130433637649
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6095859833589646294}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 99303295fe534f42863cd15bf22587f9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  left:
+    keyCode: 97
+    icon: {fileID: 5321565721314628342}
+  right:
+    keyCode: 100
+    icon: {fileID: 7797841368364398355}
+  forceOrigin: {x: 0, y: -0.5, z: 0}
 --- !u!212 &6095859833589646293
 SpriteRenderer:
   m_ObjectHideFlags: 0
@@ -442,7 +732,7 @@ BoxCollider2D:
   m_AutoTiling: 0
   serializedVersion: 2
   m_Size: {x: 1, y: 1}
-  m_EdgeRadius: 0
+  m_EdgeRadius: 0.05
 --- !u!1 &6095859834264611320
 GameObject:
   m_ObjectHideFlags: 0
@@ -490,9 +780,91 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   segments:
-  - {fileID: 6095859833589646292}
-  - {fileID: 6095859832867562452}
-  - {fileID: 6095859833293776202}
+  - {fileID: 6063944130433637649}
+  - {fileID: 6967752935869289387}
   sensitivity: 2
+  verticalSensitivity: 2
   ballPrefab: {fileID: 2510945038599774573, guid: 2485406c33a7d4f5481ce936cc9b162e, type: 3}
   ballSpeed: 500
+--- !u!1 &7797841368364398355
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7020633736805051563}
+  - component: {fileID: 2015508652436829747}
+  m_Layer: 0
+  m_Name: D
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &7020633736805051563
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7797841368364398355}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 1.5, y: 0, z: 0}
+  m_LocalScale: {x: 6, y: 3, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6095859833589646295}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2015508652436829747
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7797841368364398355}
+  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_RayTraceProcedural: 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: 7664807735657788756, guid: 4c50c736e129f4891bb6f68b964d823d, 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.14, y: 0.14}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
index 59edbf54bfda7f879400017c590d3798cac85f00..9cef90d290abab0cee5a2a5d3878a4865f8665c2 100644 (file)
@@ -123,6 +123,11 @@ NavMeshSettings:
     debug:
       m_Flags: 0
   m_NavMeshData: {fileID: 0}
+--- !u!4 &288486053 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6095859832867562448, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+  m_PrefabInstance: {fileID: 984947992}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1 &293352246 stripped
 GameObject:
   m_CorrespondingSourceObject: {fileID: 6554888089662917209, guid: be9aa59b997c243a2bf4287cb2129092, type: 3}
@@ -165,6 +170,7 @@ GameObject:
   - component: {fileID: 519420032}
   - component: {fileID: 519420031}
   - component: {fileID: 519420029}
+  - component: {fileID: 519420030}
   m_Layer: 0
   m_Name: Main Camera
   m_TagString: MainCamera
@@ -180,6 +186,19 @@ AudioListener:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 519420028}
   m_Enabled: 1
+--- !u!114 &519420030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: cb9598def536949fe9305920b43a1874, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  target: {fileID: 288486053}
 --- !u!20 &519420031
 Camera:
   m_ObjectHideFlags: 0
@@ -230,14 +249,14 @@ Transform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 519420028}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 5, z: -10}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 4.25, z: -10}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1001 &1915923517
+--- !u!1001 &984947992
 PrefabInstance:
   m_ObjectHideFlags: 0
   serializedVersion: 2
@@ -258,7 +277,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 6095859834264611321, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
       propertyPath: m_LocalPosition.y
-      value: 3.75
+      value: 3
       objectReference: {fileID: 0}
     - target: {fileID: 6095859834264611321, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
       propertyPath: m_LocalPosition.z
@@ -292,8 +311,138 @@ PrefabInstance:
       propertyPath: m_LocalEulerAnglesHint.z
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+      propertyPath: sensitivity
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+      propertyPath: upSensitivity
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+      propertyPath: verticalSensitivity
+      value: 1.5
+      objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+--- !u!1001 &1354192741
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_RootOrder
+      value: 4
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalScale.x
+      value: -5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: -12.75
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 5.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008836, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_Name
+      value: Hoop (1)
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+--- !u!1001 &1402386184
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_RootOrder
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 12.75
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 5.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2106494524751008836, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
+      propertyPath: m_Name
+      value: Hoop
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
 --- !u!1001 &6554888089409436015
 PrefabInstance:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/AIController.cs b/Assets/Scripts/AIController.cs
deleted file mode 100644 (file)
index 9cb20fb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-using UnityEngine;
-
-public class AIController : MonoBehaviour
-{
-       private void Update()
-       {
-               if (Input.GetKey(KeyCode.H))
-               {
-                       transform.position += Vector3.right * 0.01f;
-               }
-               else if (Input.GetKey(KeyCode.F))
-               {
-                       transform.position += Vector3.left * 0.01f;
-               }
-       }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Controllers.meta b/Assets/Scripts/Controllers.meta
new file mode 100644 (file)
index 0000000..8f91366
--- /dev/null
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 62c7deb7956f4aa1a8b47e1601df4173
+timeCreated: 1623470772
\ No newline at end of file
diff --git a/Assets/Scripts/Controllers/AIController.cs b/Assets/Scripts/Controllers/AIController.cs
new file mode 100644 (file)
index 0000000..9f115c2
--- /dev/null
@@ -0,0 +1,19 @@
+using UnityEngine;
+
+namespace Controllers
+{
+  public class AIController : MonoBehaviour
+  {
+    private void Update()
+    {
+      if (Input.GetKey(KeyCode.H))
+      {
+        transform.position += Vector3.right * 0.01f;
+      }
+      else if (Input.GetKey(KeyCode.F))
+      {
+        transform.position += Vector3.left * 0.01f;
+      }
+    }
+  }
+}
diff --git a/Assets/Scripts/Controllers/CameraController.cs b/Assets/Scripts/Controllers/CameraController.cs
new file mode 100644 (file)
index 0000000..a72b2f4
--- /dev/null
@@ -0,0 +1,14 @@
+using UnityEngine;
+
+namespace Controllers
+{
+  public class CameraController : MonoBehaviour
+  {
+    [SerializeField] private Transform target;
+
+    private void Update()
+    {
+      transform.position = new Vector3(target.transform.position.x, target.transform.position.y, -10f);
+    }
+  }
+}
diff --git a/Assets/Scripts/Controllers/CameraController.cs.meta b/Assets/Scripts/Controllers/CameraController.cs.meta
new file mode 100644 (file)
index 0000000..993e111
--- /dev/null
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cb9598def536949fe9305920b43a1874
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Controllers/Player.meta b/Assets/Scripts/Controllers/Player.meta
new file mode 100644 (file)
index 0000000..969fc57
--- /dev/null
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 5048baca0abc4e02a20e35db55394c74
+timeCreated: 1623470798
\ No newline at end of file
diff --git a/Assets/Scripts/Controllers/Player/PlayerController.cs b/Assets/Scripts/Controllers/Player/PlayerController.cs
new file mode 100644 (file)
index 0000000..c5cfc3d
--- /dev/null
@@ -0,0 +1,75 @@
+using System.Linq;
+using Controllers.Player;
+using UnityEngine;
+
+namespace Controllers.Player
+{
+  public class PlayerController : MonoBehaviour
+  {
+    [SerializeField] private PlayerSegment[] segments;
+    [SerializeField] private float sensitivity;
+    [SerializeField] private float verticalSensitivity;
+
+    [SerializeField] private Rigidbody2D ballPrefab;
+    [SerializeField] private float ballSpeed;
+
+    private void Update()
+    {
+      for (var i = 0; i < segments.Length; i++)
+      {
+        var segment = segments[i];
+        var isRoot = i == 0;
+        
+        // Update icons
+        foreach (var control in new[] {segment.left, segment.right})
+        {
+          if (Input.GetKeyDown(control.keyCode))
+            control.icon.SetActive(true);
+          else if (Input.GetKeyUp(control.keyCode))
+            control.icon.SetActive(false);
+        }
+
+        // Add forces
+        if (Input.GetKey(segment.left.keyCode))
+          segment.Rigidbody.AddForceAtPosition(Vector2.left * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), segment.transform.position + (segment.Sprite.bounds.size.y * segment.forceOrigin));
+        if (Input.GetKey(segment.right.keyCode))
+          segment.Rigidbody.AddForceAtPosition(Vector2.right * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), segment.transform.position + (segment.Sprite.bounds.size.y * segment.forceOrigin));
+      }
+
+      // if (Input.GetKey(KeyCode.D))
+      // {
+      //   segments[0].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f);
+      // }
+      // else if (Input.GetKey(KeyCode.A))
+      // {
+      //   segments[0].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f);
+      // }
+      //
+      // if (Input.GetKey(KeyCode.L))
+      // {
+      //   segments[1].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f);
+      // }
+      // else if (Input.GetKey(KeyCode.J))
+      // {
+      //   segments[1].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f);
+      // }
+      //
+      // if (Input.GetKey(KeyCode.RightArrow))
+      // {
+      //   segments[2].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f);
+      // }
+      // else if (Input.GetKey(KeyCode.LeftArrow))
+      // {
+      //   segments[2].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f);
+      // }
+      //
+      if (Input.GetKeyDown(KeyCode.Space))
+      {
+        var ball = Instantiate(ballPrefab);
+        var lastSegment = segments.Last();
+        ball.transform.position = lastSegment.transform.position;
+        ball.AddForce((lastSegment.transform.right + lastSegment.transform.up) * ballSpeed);
+      }
+    }
+  }
+}
diff --git a/Assets/Scripts/Controllers/Player/PlayerSegment.cs b/Assets/Scripts/Controllers/Player/PlayerSegment.cs
new file mode 100644 (file)
index 0000000..6306201
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+using UnityEngine;
+
+namespace Controllers.Player
+{
+  [RequireComponent(typeof(Rigidbody2D))]
+  [RequireComponent(typeof(SpriteRenderer))]
+  public class PlayerSegment : MonoBehaviour
+  {
+    [SerializeField] public Control left;
+    [SerializeField] public Control right;
+
+    [SerializeField] public Vector3 forceOrigin; 
+
+    public Rigidbody2D Rigidbody => _rigidbody != null ? _rigidbody : _rigidbody = GetComponent<Rigidbody2D>();
+    private Rigidbody2D _rigidbody;
+
+    public SpriteRenderer Sprite => _sprite != null ? _sprite : _sprite = GetComponent<SpriteRenderer>();
+    private SpriteRenderer _sprite;
+  }
+
+  [Serializable]
+  public struct Control
+  {
+    public KeyCode keyCode;
+    public GameObject icon;
+  }
+}
diff --git a/Assets/Scripts/Controllers/Player/PlayerSegment.cs.meta b/Assets/Scripts/Controllers/Player/PlayerSegment.cs.meta
new file mode 100644 (file)
index 0000000..915819f
--- /dev/null
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 99303295fe534f42863cd15bf22587f9
+timeCreated: 1623470806
\ No newline at end of file
diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs
deleted file mode 100644 (file)
index 22ce225..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using UnityEngine;
-
-public class PlayerController : MonoBehaviour
-{
-  [SerializeField] private List<Rigidbody2D> segments;
-  [SerializeField] private float sensitivity;
-
-  [SerializeField] private Rigidbody2D ballPrefab;
-  [SerializeField] private float ballSpeed;
-
-  private void Update()
-  {
-    if (Input.GetKey(KeyCode.D))
-    {
-      segments[0].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f);
-    }
-    else if (Input.GetKey(KeyCode.A))
-    {
-      segments[0].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f);
-    }
-    
-    if (Input.GetKey(KeyCode.L))
-    {
-      segments[1].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f);
-    }
-    else if (Input.GetKey(KeyCode.J))
-    {
-      segments[1].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f);
-    }
-    
-    if (Input.GetKey(KeyCode.RightArrow))
-    {
-      segments[2].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f);
-    }
-    else if (Input.GetKey(KeyCode.LeftArrow))
-    {
-      segments[2].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f);
-    }
-
-    if (Input.GetKeyDown(KeyCode.Space))
-    {
-      var ball = Instantiate(ballPrefab);
-      ball.transform.position = segments.Last().position;
-      ball.AddForce((Vector2.right + Vector2.up) * ballSpeed);
-    }
-  }
-}
diff --git a/Assets/Sprites/Buttons.png b/Assets/Sprites/Buttons.png
new file mode 100644 (file)
index 0000000..33bd61e
Binary files /dev/null and b/Assets/Sprites/Buttons.png differ
diff --git a/Assets/Sprites/Buttons.png.meta b/Assets/Sprites/Buttons.png.meta
new file mode 100644 (file)
index 0000000..fafffc4
--- /dev/null
@@ -0,0 +1,216 @@
+fileFormatVersion: 2
+guid: 4c50c736e129f4891bb6f68b964d823d
+TextureImporter:
+  internalIDToNameTable:
+  - first:
+      213: 8894201953851282084
+    second: A
+  - first:
+      213: 7664807735657788756
+    second: D
+  - first:
+      213: -5402412272178277761
+    second: Arrow.Left
+  - first:
+      213: 2013261503205373015
+    second: Arrow.Right
+  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
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 0
+    aniso: -1
+    mipBias: -100
+    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
+  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
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    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:
+    - serializedVersion: 2
+      name: A
+      rect:
+        serializedVersion: 2
+        x: 0
+        y: 14
+        width: 14
+        height: 14
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4a214e3bd8d8e6b70800000000000000
+      internalID: 8894201953851282084
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: D
+      rect:
+        serializedVersion: 2
+        x: 14
+        y: 14
+        width: 14
+        height: 14
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4557c83960ede5a60800000000000000
+      internalID: 7664807735657788756
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: Arrow.Left
+      rect:
+        serializedVersion: 2
+        x: 0
+        y: 0
+        width: 14
+        height: 14
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f725a9269a6c605b0800000000000000
+      internalID: -5402412272178277761
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: Arrow.Right
+      rect:
+        serializedVersion: 2
+        x: 14
+        y: 0
+        width: 14
+        height: 14
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7547682abaa80fb10800000000000000
+      internalID: 2013261503205373015
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: