From 4efbbbc785431ce6944ce61459a81c291b2e1d3e Mon Sep 17 00:00:00 2001 From: hzmt Date: Fri, 30 Jan 2026 21:51:11 -0600 Subject: [PATCH] Adding 2nd player --- Assets/InputSystem_Actions.inputactions | 50 +++- Assets/Scenes/Level1.unity | 269 ++++++++++++++++++- Assets/Scripts/PlayerPlatformerController.cs | 16 +- ProjectSettings/ProjectSettings.asset | 6 +- 4 files changed, 328 insertions(+), 13 deletions(-) diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 1a12cb9..92e973c 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -475,6 +475,54 @@ } ] }, + { + "name": "Player2", + "id": "e09ab1f9-1f3e-4320-aaf1-8e26f7c0fa3b", + "actions": [ + { + "name": "Move", + "type": "Value", + "id": "f2914b5b-4f07-4c51-8cd1-09d6f2c05a92", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Jump", + "type": "Button", + "id": "59f4f6f2-8b45-47e1-9d68-8f0d3c2d3d8c", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "3e27cbb3-d4f2-4c27-9e7d-0d2d851e8c7d", + "path": "/leftStick", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "0bb7b65d-0e9d-4a2a-8bd4-35a4d9f5b7a2", + "path": "/buttonSouth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, { "name": "UI", "id": "272f6d14-89ba-496f-b7ff-215263d3219f", @@ -1054,4 +1102,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity index de80db8..128081f 100644 --- a/Assets/Scenes/Level1.unity +++ b/Assets/Scenes/Level1.unity @@ -232,6 +232,7 @@ BoxCollider2D: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100100000} m_Enabled: 1 + serializedVersion: 3 m_Density: 1 m_Material: {fileID: 0} m_IncludeLayers: @@ -240,11 +241,33 @@ BoxCollider2D: 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: 0 m_UsedByEffector: 0 - m_UsedByComposite: 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, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 m_Size: {x: 1, y: 1} m_EdgeRadius: 0 --- !u!1 &100200000 @@ -356,19 +379,19 @@ MonoBehaviour: m_EditorClassIdentifier: --- !u!50 &100200004 Rigidbody2D: + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100200000} - serializedVersion: 4 m_BodyType: 0 m_Simulated: 1 m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 m_Mass: 1 - m_LinearDrag: 0 - m_AngularDrag: 0.05 + m_LinearDamping: 0 + m_AngularDamping: 0.05 m_GravityScale: 1 m_Material: {fileID: 0} m_IncludeLayers: @@ -377,7 +400,7 @@ Rigidbody2D: m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 - m_Interpolation: 0 + m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 @@ -389,6 +412,7 @@ BoxCollider2D: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100200000} m_Enabled: 1 + serializedVersion: 3 m_Density: 1 m_Material: {fileID: 0} m_IncludeLayers: @@ -397,11 +421,33 @@ BoxCollider2D: 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: 0 m_UsedByEffector: 0 - m_UsedByComposite: 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, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 m_Size: {x: 1, y: 1} m_EdgeRadius: 0 --- !u!114 &100200006 @@ -416,13 +462,219 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 528643a4ae944836a40ce783da8c1b78, type: 3} m_Name: m_EditorClassIdentifier: - inputActions: {fileID: 11400000, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 2} + inputActions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} actionMapName: Player moveActionName: Move jumpActionName: Jump + controlSchemeName: Keyboard&Mouse moveSpeed: 6 jumpImpulse: 8 - groundMask: -1 + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + groundCheckDistance: 0.05 +--- !u!1 &100300000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 100300001} + - component: {fileID: 100300002} + - component: {fileID: 100300003} + - component: {fileID: 100300004} + - component: {fileID: 100300005} + - component: {fileID: 100300006} + m_Layer: 0 + m_Name: Player 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &100300001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: -1, 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 &100300002 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_MaskInteraction: 0 + m_Sprite: {fileID: 0} + m_Color: {r: 1, g: 0.55, b: 0.2, 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: 0 + m_SpriteSortPoint: 0 +--- !u!114 &100300003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 13a3649e0bdf48b4afa233a4a4b64820, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!50 &100300004 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + 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: 4 +--- !u!61 &100300005 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + 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: 0 + 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, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &100300006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100300000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 528643a4ae944836a40ce783da8c1b78, type: 3} + m_Name: + m_EditorClassIdentifier: + inputActions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} + actionMapName: Player2 + moveActionName: Move + jumpActionName: Jump + controlSchemeName: Gamepad + moveSpeed: 6 + jumpImpulse: 8 + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 groundCheckDistance: 0.05 --- !u!1 &855644964 GameObject: @@ -523,3 +775,4 @@ SceneRoots: - {fileID: 855644967} - {fileID: 100100001} - {fileID: 100200001} + - {fileID: 100300001} diff --git a/Assets/Scripts/PlayerPlatformerController.cs b/Assets/Scripts/PlayerPlatformerController.cs index 736ca98..0d580a5 100644 --- a/Assets/Scripts/PlayerPlatformerController.cs +++ b/Assets/Scripts/PlayerPlatformerController.cs @@ -9,6 +9,7 @@ public class PlayerPlatformerController : MonoBehaviour [SerializeField] private string actionMapName = "Player"; [SerializeField] private string moveActionName = "Move"; [SerializeField] private string jumpActionName = "Jump"; + [SerializeField] private string controlSchemeName = ""; [SerializeField] private float moveSpeed = 6f; [SerializeField] private float jumpImpulse = 8f; [SerializeField] private LayerMask groundMask = ~0; @@ -16,6 +17,7 @@ public class PlayerPlatformerController : MonoBehaviour private Rigidbody2D body; private BoxCollider2D bodyCollider; + private InputActionAsset runtimeActions; private InputAction moveAction; private InputAction jumpAction; @@ -33,7 +35,13 @@ public class PlayerPlatformerController : MonoBehaviour return; } - var map = inputActions.FindActionMap(actionMapName, true); + runtimeActions = Instantiate(inputActions); + if (!string.IsNullOrWhiteSpace(controlSchemeName)) + { + runtimeActions.bindingMask = InputBinding.MaskByGroup(controlSchemeName); + } + + var map = runtimeActions.FindActionMap(actionMapName, true); moveAction = map.FindAction(moveActionName, true); jumpAction = map.FindAction(jumpActionName, true); @@ -54,6 +62,12 @@ public class PlayerPlatformerController : MonoBehaviour { moveAction.Disable(); } + + if (runtimeActions != null) + { + runtimeActions.Disable(); + runtimeActions = null; + } } private void FixedUpdate() diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 220a244..5bc4a6b 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -682,11 +682,11 @@ PlayerSettings: captureStartupLogs: {} activeInputHandler: 1 windowsGamepadBackendHint: 0 - cloudProjectId: + cloudProjectId: b260f126-ec58-47f4-b454-ba7db288a3bf framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] - projectName: - organizationId: + projectName: GGJ2026 + organizationId: fa85ebd-8959-4e73-a927-ec9a8c20a21e cloudEnabled: 0 legacyClampBlendShapeWeights: 0 hmiLoadingImage: {fileID: 0}