From e29208a2e505bf58b2bcad8c60e4faed9c6c5fcd Mon Sep 17 00:00:00 2001 From: reisenlol Date: Fri, 30 Jan 2026 02:26:51 -0800 Subject: [PATCH] BEHOLD, MY SUPER LASER PISS --- Assets/InputSystem_Actions.inputactions | 82 +++++++++- Assets/Prefabs/BasicProjectile.prefab | 182 +++++++++++++++++++++ Assets/Prefabs/BasicProjectile.prefab.meta | 7 + Assets/Prefabs/BeamObject.prefab | 89 ++++++++++ Assets/Prefabs/BeamObject.prefab.meta | 7 + Assets/Prefabs/Enemy.prefab | 4 +- Assets/Prefabs/MagicMissile.prefab | 54 ++++++ Assets/Prefabs/MagicMissile.prefab.meta | 7 + Assets/Prefabs/Marisa.prefab | 96 ++++++++++- Assets/Prefabs/MasterSpark.prefab | 56 +++++++ Assets/Prefabs/MasterSpark.prefab.meta | 7 + Assets/Scenes/Game.unity | 18 +- Assets/Scripts/Enemy.cs | 4 + Assets/Scripts/Entity.cs | 1 - Assets/Scripts/FireBullet.cs | 20 +++ Assets/Scripts/FireBullet.cs.meta | 2 + Assets/Scripts/Laser.cs | 60 +++++++ Assets/Scripts/Laser.cs.meta | 2 + Assets/Scripts/Marisa.cs | 8 + Assets/Scripts/MarisaAbilityHandler.cs | 48 +++++- Assets/Scripts/MasterSpark.cs | 16 ++ Assets/Scripts/MasterSpark.cs.meta | 2 + Assets/Scripts/PlayerAbility.cs | 8 +- 23 files changed, 760 insertions(+), 20 deletions(-) create mode 100644 Assets/Prefabs/BasicProjectile.prefab create mode 100644 Assets/Prefabs/BasicProjectile.prefab.meta create mode 100644 Assets/Prefabs/BeamObject.prefab create mode 100644 Assets/Prefabs/BeamObject.prefab.meta create mode 100644 Assets/Prefabs/MagicMissile.prefab create mode 100644 Assets/Prefabs/MagicMissile.prefab.meta create mode 100644 Assets/Prefabs/MasterSpark.prefab create mode 100644 Assets/Prefabs/MasterSpark.prefab.meta create mode 100644 Assets/Scripts/FireBullet.cs create mode 100644 Assets/Scripts/FireBullet.cs.meta create mode 100644 Assets/Scripts/Laser.cs create mode 100644 Assets/Scripts/Laser.cs.meta create mode 100644 Assets/Scripts/MasterSpark.cs create mode 100644 Assets/Scripts/MasterSpark.cs.meta diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 1a12cb9..ff6f364 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -81,7 +81,43 @@ "name": "Sprint", "type": "Button", "id": "641cd816-40e6-41b4-8c3d-04687c349290", - "expectedControlType": "Button", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "MainAttack", + "type": "Button", + "id": "c84c947a-28a1-419c-857f-510e8096f94a", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "SecondaryAttack", + "type": "Button", + "id": "2478fbe8-6cdf-4fe0-9b5f-17bab72b1c06", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "SpellA", + "type": "Button", + "id": "dd1c4a00-f1a5-488f-bdb5-71e4a8686563", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "SpellB", + "type": "Button", + "id": "77b54140-a53c-4b5f-8744-da33e771bf47", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": false @@ -472,6 +508,50 @@ "action": "Crouch", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "9a5e1492-fcd2-43e5-9021-8454833a068b", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "MainAttack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3b70ca57-d376-43f0-87ea-11eeb37754a7", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "", + "action": "SecondaryAttack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "56972522-50f9-40e3-abbb-34e1a1fb5b62", + "path": "/q", + "interactions": "", + "processors": "", + "groups": "", + "action": "SpellA", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "9e433065-68e7-4473-9b49-835f094757dc", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "", + "action": "SpellB", + "isComposite": false, + "isPartOfComposite": false } ] }, diff --git a/Assets/Prefabs/BasicProjectile.prefab b/Assets/Prefabs/BasicProjectile.prefab new file mode 100644 index 0000000..4c8804d --- /dev/null +++ b/Assets/Prefabs/BasicProjectile.prefab @@ -0,0 +1,182 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4806008101797467748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8258649627709469250} + - component: {fileID: 6349442989841225491} + - component: {fileID: 4462715779770199878} + - component: {fileID: 4942254205620830605} + - component: {fileID: 41144518337917555} + m_Layer: 7 + m_Name: BasicProjectile + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8258649627709469250 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4806008101797467748} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.6, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6349442989841225491 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4806008101797467748} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Color: {r: 0.5518868, g: 0.89665896, 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!50 &4462715779770199878 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4806008101797467748} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!61 &4942254205620830605 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4806008101797467748} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 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: 1, y: 1} + newSize: {x: 1, y: 1} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &41144518337917555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4806008101797467748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e66b3403d93ec8803822e3a85537224b, type: 3} + m_Name: + m_EditorClassIdentifier: + damage: 0 + speed: 0 + pierceAmount: 0 + lifetime: 0 + rb: {fileID: 4462715779770199878} diff --git a/Assets/Prefabs/BasicProjectile.prefab.meta b/Assets/Prefabs/BasicProjectile.prefab.meta new file mode 100644 index 0000000..9b50b27 --- /dev/null +++ b/Assets/Prefabs/BasicProjectile.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c8c4bd2326cbed637aa720d1a4d73968 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/BeamObject.prefab b/Assets/Prefabs/BeamObject.prefab new file mode 100644 index 0000000..9f351b8 --- /dev/null +++ b/Assets/Prefabs/BeamObject.prefab @@ -0,0 +1,89 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6182044071860294324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4986471857814220672} + - component: {fileID: 4250140839191994890} + m_Layer: 0 + m_Name: BeamObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4986471857814220672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6182044071860294324} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4250140839191994890 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6182044071860294324} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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 diff --git a/Assets/Prefabs/BeamObject.prefab.meta b/Assets/Prefabs/BeamObject.prefab.meta new file mode 100644 index 0000000..da1f6a8 --- /dev/null +++ b/Assets/Prefabs/BeamObject.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5c95f1061d0b0a13694b57cb8a14866c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab index 8b77041..04389d0 100644 --- a/Assets/Prefabs/Enemy.prefab +++ b/Assets/Prefabs/Enemy.prefab @@ -307,8 +307,8 @@ MonoBehaviour: - {fileID: 5382070844028718038} - {fileID: 1261620358221650041} - {fileID: 2490025746165144143} - forwardPercent: 45 - strafePercent: 55 + forwardPercent: 60 + strafePercent: 40 --- !u!1 &7992963443241331386 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/MagicMissile.prefab b/Assets/Prefabs/MagicMissile.prefab new file mode 100644 index 0000000..b672f26 --- /dev/null +++ b/Assets/Prefabs/MagicMissile.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3204262992054338593 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6210518781829362723} + - component: {fileID: 8579369158027197764} + m_Layer: 0 + m_Name: MagicMissile + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6210518781829362723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204262992054338593} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8579369158027197764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204262992054338593} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62c2c7dce05d07c06b237843ff48ab2e, type: 3} + m_Name: + m_EditorClassIdentifier: + abilityName: Magic Missile + thisPlayer: {fileID: 0} + cooldown: 0.2 + accuracy: 1 + bulletLifetime: 3 + damage: 5 + projectileSpeed: 16 + projectile: {fileID: 41144518337917555, guid: c8c4bd2326cbed637aa720d1a4d73968, type: 3} diff --git a/Assets/Prefabs/MagicMissile.prefab.meta b/Assets/Prefabs/MagicMissile.prefab.meta new file mode 100644 index 0000000..f6e1526 --- /dev/null +++ b/Assets/Prefabs/MagicMissile.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d695e39a8ed83e67aa09d75b33cf7bb3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Marisa.prefab b/Assets/Prefabs/Marisa.prefab index fcfdd04..f76e113 100644 --- a/Assets/Prefabs/Marisa.prefab +++ b/Assets/Prefabs/Marisa.prefab @@ -526,6 +526,91 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &3916617359490499219 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5150015966705364997} + - component: {fileID: 7002501187268097541} + - component: {fileID: 4421559795750709312} + m_Layer: 0 + m_Name: AbilityHandler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5150015966705364997 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3916617359490499219} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5661264056639479186} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7002501187268097541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3916617359490499219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4cb2f99b870cbec6b3f8e40a997b596, type: 3} + m_Name: + m_EditorClassIdentifier: + inputHandler: {fileID: 4421559795750709312} + thisPlayer: {fileID: 5275979051295637757} + mainAttack: {fileID: 8579369158027197764, guid: d695e39a8ed83e67aa09d75b33cf7bb3, type: 3} + secondaryAttack: {fileID: 8579369158027197764, guid: d695e39a8ed83e67aa09d75b33cf7bb3, type: 3} + spellA: {fileID: 2212103048918046095, guid: 2d849b52879286a90a56fa3955e0adb6, type: 3} + spellB: {fileID: 8579369158027197764, guid: d695e39a8ed83e67aa09d75b33cf7bb3, type: 3} + mainAttackInstance: {fileID: 0} + secondaryAttackInstance: {fileID: 0} + spellAInstance: {fileID: 0} + spellBInstance: {fileID: 0} +--- !u!114 &4421559795750709312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3916617359490499219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} + m_NotificationBehavior: 0 + m_UIInputModule: {fileID: 0} + m_DeviceLostEvent: + m_PersistentCalls: + m_Calls: [] + m_DeviceRegainedEvent: + m_PersistentCalls: + m_Calls: [] + m_ControlsChangedEvent: + m_PersistentCalls: + m_Calls: [] + m_ActionEvents: [] + m_NeverAutoSwitchControlSchemes: 0 + m_DefaultControlScheme: + m_DefaultActionMap: Player + m_SplitScreenIndex: -1 + m_Camera: {fileID: 0} --- !u!1 &5080576259360811646 GameObject: m_ObjectHideFlags: 0 @@ -541,7 +626,7 @@ GameObject: - component: {fileID: 5275979051295637757} m_Layer: 6 m_Name: Marisa - m_TagString: Untagged + m_TagString: Friendly m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -563,6 +648,7 @@ Transform: - {fileID: 7862409553682532041} - {fileID: 3445211528256210067} - {fileID: 9200583498738940138} + - {fileID: 5150015966705364997} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8885222195297553295 @@ -706,12 +792,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: entityName: Marisa + sprite: {fileID: 8885222195297553295} stalled: 0 invincible: 0 - health: 0 - maxHealth: 0 + health: 100 + maxHealth: 100 + isFacingRight: 0 rb: {fileID: -8972317287717925794} speed: 8 + cam: {fileID: 0} + mouseWorldPos: {x: 0, y: 0} --- !u!1 &6396436912902618782 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/MasterSpark.prefab b/Assets/Prefabs/MasterSpark.prefab new file mode 100644 index 0000000..969dd85 --- /dev/null +++ b/Assets/Prefabs/MasterSpark.prefab @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3204262992054338593 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6210518781829362723} + - component: {fileID: 2212103048918046095} + m_Layer: 0 + m_Name: MasterSpark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6210518781829362723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204262992054338593} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2212103048918046095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204262992054338593} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0cf7f93f057ff904b45c1d01f3de323, type: 3} + m_Name: + m_EditorClassIdentifier: + abilityName: Master Spark + thisPlayer: {fileID: 0} + canCooldown: 1 + cooldown: 1 + length: 100 + width: 2 + duration: 4 + beamObject: {fileID: 6182044071860294324, guid: 5c95f1061d0b0a13694b57cb8a14866c, type: 3} + turnSpeed: 10 + offset: 0.5 diff --git a/Assets/Prefabs/MasterSpark.prefab.meta b/Assets/Prefabs/MasterSpark.prefab.meta new file mode 100644 index 0000000..af457a4 --- /dev/null +++ b/Assets/Prefabs/MasterSpark.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2d849b52879286a90a56fa3955e0adb6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 069a755..5ed0d76 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -132,17 +132,13 @@ PrefabInstance: value: Marisa objectReference: {fileID: 0} - target: {fileID: 5080576259360811646, guid: 8764555a5fdde3428903d7ac06f8ff7f, type: 3} - propertyPath: m_TagString - value: Friendly + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - target: {fileID: 5275979051295637757, guid: 8764555a5fdde3428903d7ac06f8ff7f, type: 3} - propertyPath: health - value: 100 - objectReference: {fileID: 0} - - target: {fileID: 5275979051295637757, guid: 8764555a5fdde3428903d7ac06f8ff7f, type: 3} - propertyPath: maxHealth - value: 100 - objectReference: {fileID: 0} + propertyPath: cam + value: + objectReference: {fileID: 519420031} - target: {fileID: 5661264056639479186, guid: 8764555a5fdde3428903d7ac06f8ff7f, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -952,6 +948,10 @@ PrefabInstance: propertyPath: m_Name value: Enemy objectReference: {fileID: 0} + - target: {fileID: 7987017199152692169, guid: 063e01ce3891d882e88d10b67e7f9f7b, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8365993665657711315, guid: 063e01ce3891d882e88d10b67e7f9f7b, type: 3} propertyPath: m_LocalPosition.x value: -4.103 diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs index cc77b90..4038559 100644 --- a/Assets/Scripts/Enemy.cs +++ b/Assets/Scripts/Enemy.cs @@ -51,4 +51,8 @@ public class Enemy : Entity FlipSprite(directionToMove); } } + protected override void OnKillEffects() + { + Destroy(gameObject); + } } diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs index c547213..f232a86 100644 --- a/Assets/Scripts/Entity.cs +++ b/Assets/Scripts/Entity.cs @@ -40,7 +40,6 @@ public class Entity : MonoBehaviour public void TakeDamage(float damage) { health -= damage; - health = Mathf.Clamp(health, 0, maxHealth); if (health < 0) { OnKillEffects(); diff --git a/Assets/Scripts/FireBullet.cs b/Assets/Scripts/FireBullet.cs new file mode 100644 index 0000000..9664069 --- /dev/null +++ b/Assets/Scripts/FireBullet.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +public class FireBullet : PlayerAbility +{ + public float accuracy; + public float bulletLifetime; + public float damage; + public float projectileSpeed; + [SerializeField] private Projectile projectile; + protected override void AbilityEffects() + { + Projectile newProjectile = Instantiate(projectile, transform.position, transform.rotation); + newProjectile.damage = damage; + newProjectile.speed = projectileSpeed; + newProjectile.lifetime = bulletLifetime; + newProjectile.RotateToTarget(thisPlayer.mouseWorldPos); + newProjectile.transform.Rotate(0, 0, Random.Range(-accuracy, accuracy)); + newProjectile.tag = thisPlayer.tag; + } +} diff --git a/Assets/Scripts/FireBullet.cs.meta b/Assets/Scripts/FireBullet.cs.meta new file mode 100644 index 0000000..6da9757 --- /dev/null +++ b/Assets/Scripts/FireBullet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 62c2c7dce05d07c06b237843ff48ab2e \ No newline at end of file diff --git a/Assets/Scripts/Laser.cs b/Assets/Scripts/Laser.cs new file mode 100644 index 0000000..3129d94 --- /dev/null +++ b/Assets/Scripts/Laser.cs @@ -0,0 +1,60 @@ +using System; +using Core.Extensions; +using UnityEngine; + +public class Laser : PlayerAbility +{ + [Header("Laser Properties")] + public float length; + public float width; + public float duration; + private float currentDuration; + [Header("Beam")] + [SerializeField] private GameObject beamObject; + private GameObject beamObjectInstance; + public float turnSpeed; + public float offset; + + private void Start() + { + CreateBeam(); + } + + protected override void AbilityEffects() + { + canCooldown = false; + currentDuration = duration; + beamObjectInstance.SetActive(true); + transform.Lookat2D(thisPlayer.mouseWorldPos); + } + + protected override void Update() + { + if (currentDuration > 0) + { + Vector3 direction = (thisPlayer.mouseWorldPos - (Vector2)transform.position).normalized; + float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; + transform.rotation = Quaternion.RotateTowards(beamObjectInstance.transform.rotation, Quaternion.Euler(0,0,angle), turnSpeed * Time.deltaTime); + currentDuration -= Time.deltaTime; + if (currentDuration <= 0) + { + canCooldown = true; + beamObjectInstance.SetActive(false); + } + } + } + + private void CreateBeam() + { + beamObjectInstance = Instantiate(beamObject, transform.position, Quaternion.identity); + beamObjectInstance.transform.SetParent(transform); + beamObjectInstance.transform.localScale = new Vector3(length, width, 1); + beamObjectInstance.transform.Translate(Vector3.right * (beamObjectInstance.transform.localScale.x * 0.5f) + new Vector3(offset, 0, 0)); + beamObjectInstance.SetActive(false); + } + + private void DetectEnemies() + { + + } +} diff --git a/Assets/Scripts/Laser.cs.meta b/Assets/Scripts/Laser.cs.meta new file mode 100644 index 0000000..0045526 --- /dev/null +++ b/Assets/Scripts/Laser.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d0cf7f93f057ff904b45c1d01f3de323 \ No newline at end of file diff --git a/Assets/Scripts/Marisa.cs b/Assets/Scripts/Marisa.cs index 5397a47..206c833 100644 --- a/Assets/Scripts/Marisa.cs +++ b/Assets/Scripts/Marisa.cs @@ -3,6 +3,14 @@ using UnityEngine; public class Marisa : Entity { + [Header("Mouse")] + [SerializeField] private Camera cam; + public Vector2 mouseWorldPos; + private void Update() + { + mouseWorldPos = cam.ScreenToWorldPoint(Input.mousePosition); + } + protected override void FixedUpdate() { moveDirection = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); diff --git a/Assets/Scripts/MarisaAbilityHandler.cs b/Assets/Scripts/MarisaAbilityHandler.cs index 65f8535..8c1b3fa 100644 --- a/Assets/Scripts/MarisaAbilityHandler.cs +++ b/Assets/Scripts/MarisaAbilityHandler.cs @@ -1,6 +1,52 @@ +using System; using UnityEngine; +using UnityEngine.InputSystem; public class MarisaAbilityHandler : MonoBehaviour { - + [SerializeField] private PlayerInput inputHandler; + [SerializeField] private Marisa thisPlayer; + [Header("Abilities")] //maybe have to make them public for when you're changing out abilities + [SerializeField] private PlayerAbility mainAttack; + [SerializeField] private PlayerAbility secondaryAttack; + [SerializeField] private PlayerAbility spellA; + [SerializeField] private PlayerAbility spellB; + + [Header("Ability Instances")] + public PlayerAbility mainAttackInstance; + public PlayerAbility secondaryAttackInstance; + public PlayerAbility spellAInstance; + public PlayerAbility spellBInstance; + + private void Start() + { + mainAttackInstance = Instantiate(mainAttack, transform); + mainAttackInstance.thisPlayer = thisPlayer; + secondaryAttackInstance = Instantiate(secondaryAttack, transform); + secondaryAttackInstance.thisPlayer = thisPlayer; + spellAInstance = Instantiate(spellA, transform); + spellAInstance.thisPlayer = thisPlayer; + spellBInstance = Instantiate(spellB, transform); + spellBInstance.thisPlayer = thisPlayer; + } + + private void Update() + { + if (inputHandler.actions["MainAttack"].inProgress) + { + mainAttackInstance.TryAbility(); + } + else if (inputHandler.actions["SecondaryAttack"].inProgress) + { + secondaryAttackInstance.TryAbility(); + } + else if (inputHandler.actions["SpellA"].inProgress) + { + spellAInstance.TryAbility(); + } + else if (inputHandler.actions["SpellB"].inProgress) + { + spellBInstance.TryAbility(); + } + } } diff --git a/Assets/Scripts/MasterSpark.cs b/Assets/Scripts/MasterSpark.cs new file mode 100644 index 0000000..b40246a --- /dev/null +++ b/Assets/Scripts/MasterSpark.cs @@ -0,0 +1,16 @@ +using UnityEngine; + +public class MasterSpark : MonoBehaviour +{ + // Start is called once before the first execution of Update after the MonoBehaviour is created + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/MasterSpark.cs.meta b/Assets/Scripts/MasterSpark.cs.meta new file mode 100644 index 0000000..c5adbfe --- /dev/null +++ b/Assets/Scripts/MasterSpark.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e3b3742e855c4c7b499ab482efa2143e \ No newline at end of file diff --git a/Assets/Scripts/PlayerAbility.cs b/Assets/Scripts/PlayerAbility.cs index 242dbf9..5b36c3a 100644 --- a/Assets/Scripts/PlayerAbility.cs +++ b/Assets/Scripts/PlayerAbility.cs @@ -5,20 +5,22 @@ public class PlayerAbility : MonoBehaviour { [Header("Identification")] public string abilityName; - [Header("Cooldown")] + public Marisa thisPlayer; + [Header("Cooldown")] + public bool canCooldown = true; public float cooldown; private float currentCooldown; public void TryAbility() { - if (currentCooldown <= 0) + if (currentCooldown <= 0 && canCooldown) { currentCooldown = cooldown; AbilityEffects(); } } - protected void AbilityEffects() + protected virtual void AbilityEffects() { }