From 8c29a37ac9e5b97034b08e242655ec16f5f57666 Mon Sep 17 00:00:00 2001 From: Sewmina Dilshan Date: Fri, 10 Feb 2023 16:04:36 +0530 Subject: [PATCH] init --- Assets/Ball.physicsMaterial2D | 11 + Assets/Ball.physicsMaterial2D.meta | 8 + Assets/Scenes/Proto.unity | 604 ++++++++++++++++++++++++++++- Assets/Scripts/GameManager.cs | 71 ++++ Assets/Scripts/GameManager.cs.meta | 11 + Assets/Scripts/LevelGenerator.cs | 20 +- Assets/Sprites.meta | 8 + Assets/Sprites/golf_flag.png | Bin 0 -> 8812 bytes Assets/Sprites/golf_flag.png.meta | 96 +++++ Assets/golf_flag.prefab | 167 ++++++++ Assets/golf_flag.prefab.meta | 7 + 11 files changed, 994 insertions(+), 9 deletions(-) create mode 100644 Assets/Ball.physicsMaterial2D create mode 100644 Assets/Ball.physicsMaterial2D.meta create mode 100644 Assets/Scripts/GameManager.cs create mode 100644 Assets/Scripts/GameManager.cs.meta create mode 100644 Assets/Sprites.meta create mode 100644 Assets/Sprites/golf_flag.png create mode 100644 Assets/Sprites/golf_flag.png.meta create mode 100644 Assets/golf_flag.prefab create mode 100644 Assets/golf_flag.prefab.meta diff --git a/Assets/Ball.physicsMaterial2D b/Assets/Ball.physicsMaterial2D new file mode 100644 index 0000000..f9251a7 --- /dev/null +++ b/Assets/Ball.physicsMaterial2D @@ -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: Ball + friction: 1 + bounciness: 0.35 diff --git a/Assets/Ball.physicsMaterial2D.meta b/Assets/Ball.physicsMaterial2D.meta new file mode 100644 index 0000000..72021b1 --- /dev/null +++ b/Assets/Ball.physicsMaterial2D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80c1a41ed7132fa438c8fe8df8782c8b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 6200000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Proto.unity b/Assets/Scenes/Proto.unity index 48a2c2f..ef7a7bf 100644 --- a/Assets/Scenes/Proto.unity +++ b/Assets/Scenes/Proto.unity @@ -221,7 +221,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!212 &239795866 SpriteRenderer: m_ObjectHideFlags: 0 @@ -816,7 +816,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Camera_Move: 0 - Camera_MoveSpeed: 3 + Camera_MoveSpeed: 5 Layer_Speed: - 1 - 0.9 @@ -911,6 +911,144 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1171975386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1171975387} + - component: {fileID: 1171975388} + m_Layer: 0 + m_Name: Trail + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1171975387 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171975386} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1852575907} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!96 &1171975388 +TrailRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171975386} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Time: 0.5 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.12000479 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.96110976 + value: 0 + inSlope: 0.14713927 + outSlope: 0.14713927 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.70712864 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 0} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_Autodestruct: 0 + m_Emitting: 1 --- !u!1 &1212605697 GameObject: m_ObjectHideFlags: 0 @@ -1498,6 +1636,7 @@ GameObject: - component: {fileID: 1554778518} - component: {fileID: 1554778517} - component: {fileID: 1554778516} + - component: {fileID: 1554778519} m_Layer: 0 m_Name: Closed Sprite Shape m_TagString: Untagged @@ -1589,7 +1728,7 @@ MonoBehaviour: m_WorldSpaceUV: 0 m_CornerAngleThreshold: 29.1 m_ColliderDetail: 16 - m_ColliderOffset: 0.5 + m_ColliderOffset: 0 m_UpdateCollider: 1 m_OptimizeCollider: 1 m_OptimizeGeometry: 1 @@ -1667,6 +1806,77 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!60 &1554778519 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1554778515} + 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, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -11.377282, y: -6.655592} + - {x: -11.3322935, y: -6.616249} + - {x: -10.90192, y: -6.4734225} + - {x: -9.702766, y: -6.115879} + - {x: -7.4486847, y: -5.477672} + - {x: -3.451639, y: -4.374008} + - {x: -0.5167248, y: -3.5751522} + - {x: 3.142175, y: -0.4379233} + - {x: 4.146297, y: -0.49278596} + - {x: 5.3070903, y: -0.5815486} + - {x: 6.1501217, y: -0.6644081} + - {x: 7.148468, y: -0.7850535} + - {x: 7.7998075, y: -0.8756856} + - {x: 8.663816, y: -1.0215311} + - {x: 9.498302, y: -1.1949255} + - {x: 10.275622, y: -1.3980576} + - {x: 10.968131, y: -1.6331137} + - {x: 11.548172, y: -1.902275} + - {x: 11.988097, y: -2.2077093} + - {x: 12.260331, y: -2.5516498} + - {x: 12.410063, y: -2.760486} + - {x: 12.634934, y: -2.947169} + - {x: 12.923966, y: -3.1123729} + - {x: 13.266253, y: -3.2568505} + - {x: 13.6508875, y: -3.3813472} + - {x: 14.066975, y: -3.4866052} + - {x: 14.50359, y: -3.5733612} + - {x: 14.979412, y: -3.6458094} + - {x: 15.479151, y: -3.701279} + - {x: 16.23729, y: -3.7501392} + - {x: 16.612978, y: -3.7554576} + - {x: 16.985765, y: -3.7433238} + - {x: 17.218725, y: -3.7246015} + - {x: 17.484777, y: -3.6937137} + - {x: 17.638742, y: -3.7038248} + - {x: 18.004213, y: -3.797798} + - {x: 18.499556, y: -3.9599898} + - {x: 19.398153, y: -4.2928605} + - {x: 20.527252, y: -4.73734} + - {x: 22.195736, y: -5.4220695} + - {x: 24.518213, y: -6.384941} + - {x: 25.452873, y: -6.756027} + - {x: 25.728432, y: -6.8566885} + - {x: 25.930351, y: -6.9120455} + - {x: -10.87311, y: -6.6586037} + - {x: -11.377282, y: -6.655592} --- !u!1 &1615140971 GameObject: m_ObjectHideFlags: 0 @@ -1882,6 +2092,365 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1659871495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1659871499} + - component: {fileID: 1659871498} + - component: {fileID: 1659871497} + - component: {fileID: 1659871496} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1659871496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1659871495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1659871497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1659871495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1659871498 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1659871495} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1659871499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1659871495} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1707417705} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1707417704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1707417705} + - component: {fileID: 1707417707} + - component: {fileID: 1707417706} + - component: {fileID: 1707417708} + m_Layer: 5 + m_Name: InputPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1707417705 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707417704} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1659871499} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1707417706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707417704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1707417707 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707417704} + m_CullTransparentMesh: 1 +--- !u!114 &1707417708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707417704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2119506458} + m_TargetAssemblyTypeName: GameManager, Assembly-CSharp + m_MethodName: OnMouseDown + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2119506458} + m_TargetAssemblyTypeName: GameManager, Assembly-CSharp + m_MethodName: OnMouseUp + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 5 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2119506458} + m_TargetAssemblyTypeName: GameManager, Assembly-CSharp + m_MethodName: OnMouseDrag + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1852575903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1852575907} + - component: {fileID: 1852575906} + - component: {fileID: 1852575905} + - component: {fileID: 1852575904} + m_Layer: 0 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!50 &1852575904 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852575903} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 5 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &1852575905 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852575903} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 6200000, guid: 80c1a41ed7132fa438c8fe8df8782c8b, type: 2} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.5 +--- !u!212 &1852575906 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852575903} + 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: -2413806693520163455, guid: ebe73ca9363db456bacf42c025bb4847, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1852575907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852575903} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 38.31, y: 5.78, z: 0} + m_LocalScale: {x: 0.40285894, y: 0.40285894, z: 0.40285894} + m_Children: + - {fileID: 1171975387} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1931640968 GameObject: m_ObjectHideFlags: 0 @@ -2075,6 +2644,7 @@ GameObject: m_Component: - component: {fileID: 2119506456} - component: {fileID: 2119506457} + - component: {fileID: 2119506458} m_Layer: 0 m_Name: GameManager m_TagString: Untagged @@ -2090,7 +2660,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2119506455} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.9393322, y: -7.63, z: -16.066637} + m_LocalPosition: {x: 3.9393322, y: -9.66, z: -16.066637} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} @@ -2109,11 +2679,33 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: spriteShapeController: {fileID: 1554778516} - LevelCount: 200 - groundLevel: -6.5 + LevelCount: 100 + groundLevel: -10.44 maxHeight: 4 minDiff: {x: 5, y: -5} maxDiff: {x: 10, y: 4} + GoalDistance: 10 +--- !u!114 &2119506458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2119506455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7f8568f1a4cbed84691370a1d9d9fadf, type: 3} + m_Name: + m_EditorClassIdentifier: + ball: {fileID: 1852575904} + cam: {fileID: 1449942455} + camTargetPos: {x: 0, y: 0, z: 0} + cameraSmoothness: 0.1 + inputSensitivity: 0.1 + BallFriction: 0.01 + StopVelocity: 0.2 + StopTime: 0.1 + curVelocity: 0 --- !u!1 &2120181086 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs new file mode 100644 index 0000000..c83c809 --- /dev/null +++ b/Assets/Scripts/GameManager.cs @@ -0,0 +1,71 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +public class GameManager : MonoBehaviour +{ + public Rigidbody2D ball; + public Transform cam; + public Vector3 camTargetPos; + public float cameraSmoothness = 0.1f; + public float inputSensitivity = 100f; + public float BallFriction = 0.1f; + public float StopVelocity = 0.01f; + public float StopTime = 0.1f; + + public float curVelocity; + void Start() + { + camTargetPos = ball.transform.position; + } + float stopCooldown = 0; + void FixedUpdate(){ + curVelocity = ball.velocity.magnitude; + ball.velocity = Vector2.Lerp(ball.velocity, new Vector2(0, ball.velocity.y), BallFriction); + if(Mathf.Abs(ball.velocity.magnitude) < StopVelocity){ + if(stopCooldown > StopTime){ + ball.simulated=false; + }else{ + stopCooldown+=Time.deltaTime; + } + }else{ + stopCooldown=0; + } + } + + void Update(){ + camTargetPos = ball.transform.position; + } + + void LateUpdate() + { + cam.position = Vector3.Lerp(cam.position, new Vector3(camTargetPos.x, cam.position.y,cam.position.z), cameraSmoothness); + } + + + bool dragging = false; + Vector2 startPos; + public void OnMouseDown(BaseEventData e){ + PointerEventData ped = (PointerEventData) e as PointerEventData; + + startPos = ped.position; + dragging = true; + } + + public void OnMouseUp(BaseEventData e){ + PointerEventData ped = (PointerEventData) e as PointerEventData; + if(dragging){ + Vector2 v = (ped.position-startPos)/inputSensitivity; + stopCooldown=0; + + ball.simulated=true; + ball.AddForce(-v); + } + dragging = false; + } + + public void OnMouseDrag(BaseEventData e){ + + } +} diff --git a/Assets/Scripts/GameManager.cs.meta b/Assets/Scripts/GameManager.cs.meta new file mode 100644 index 0000000..84ce82e --- /dev/null +++ b/Assets/Scripts/GameManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f8568f1a4cbed84691370a1d9d9fadf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LevelGenerator.cs b/Assets/Scripts/LevelGenerator.cs index 6602fd2..b406803 100644 --- a/Assets/Scripts/LevelGenerator.cs +++ b/Assets/Scripts/LevelGenerator.cs @@ -12,6 +12,8 @@ public class LevelGenerator : MonoBehaviour public float maxHeight = 5; public Vector2 minDiff, maxDiff; public Vector3[] points {get; private set;} + + public int GoalDistance= 10; void Start() { spriteShapeController.spline.Clear(); @@ -27,25 +29,37 @@ public class LevelGenerator : MonoBehaviour Vector3 addition = new Vector3(Random.Range(minDiff.x, maxDiff.x), Random.Range(minDiff.y, maxDiff.y)); float newX = points[i-1].x + addition.x; float newY = points[i-1].y + addition.y; - while(newY < groundLevel){ + while(newY < groundLevel+2){ newY += Mathf.Abs(addition.y); } while(newY > maxHeight){ newY -= Mathf.Abs(addition.y); } points[i] = new Vector3(newX, newY); - spriteShapeController.spline.InsertPointAt(i, points[i]); + // spriteShapeController.spline.InsertPointAt(i, points[i]); + InsertNewPoint(points[i]); + + if(i % GoalDistance == 0){ + InsertNewPoint(points[i] + new Vector3(0, -1f)); + InsertNewPoint(points[i] + new Vector3(1f, -1f)); + InsertNewPoint(points[i] + new Vector3(1f, 0f)); + } } points[LevelCount] = new Vector3(points[LevelCount-1].x, groundLevel); - spriteShapeController.spline.InsertPointAt(LevelCount, points[LevelCount]); + InsertNewPoint( points[LevelCount]); } + void InsertNewPoint(Vector3 point){ + spriteShapeController.spline.InsertPointAt(spriteShapeController.spline.GetPointCount(), point); + } + + void Update() { diff --git a/Assets/Sprites.meta b/Assets/Sprites.meta new file mode 100644 index 0000000..c6bd247 --- /dev/null +++ b/Assets/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4dcd6536b29cdd6408f92d1ee3fa25a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/golf_flag.png b/Assets/Sprites/golf_flag.png new file mode 100644 index 0000000000000000000000000000000000000000..6548002f1a117b24ce8a7ff7e46b03c95a770d5e GIT binary patch literal 8812 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 iM%O~dDj69KK>r^!>jvZ%*eACD0000