From 16159b5eff77844d490e711ddfbf0c4d32f7f47a Mon Sep 17 00:00:00 2001 From: reinholzj <328scout@gmail.com> Date: Sat, 31 Jan 2026 17:23:31 -0600 Subject: [PATCH 1/4] Upload files to "Assets/Art/Final Sprites" --- Assets/Art/Final Sprites/Candy.png | Bin 0 -> 22063 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Assets/Art/Final Sprites/Candy.png diff --git a/Assets/Art/Final Sprites/Candy.png b/Assets/Art/Final Sprites/Candy.png new file mode 100644 index 0000000000000000000000000000000000000000..350c723b357e1e3bffadb2b698a4fb3aa33813b8 GIT binary patch literal 22063 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 R{H*?VbMiV_>u~nU{{ie6ISBv& literal 0 HcmV?d00001 From 61b79ae4ed38b7f6349e6a037ffe2344eb93e60e Mon Sep 17 00:00:00 2001 From: hzmt Date: Sat, 31 Jan 2026 17:45:45 -0600 Subject: [PATCH 2/4] Fixing players so that game pads only control one character --- Assets/Prefabs/Player.prefab | 2 + Assets/Scenes/Level1.unity | 7 ++ Assets/Scripts/PlayerPickupController.cs | 86 ++++++++++++++++++++ Assets/Scripts/PlayerPlatformerController.cs | 86 ++++++++++++++++++++ 4 files changed, 181 insertions(+) diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index ac0539b..3b73b79 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -199,6 +199,7 @@ MonoBehaviour: moveActionName: Move jumpActionName: Jump controlSchemeName: Keyboard&Mouse + gamepadIndex: -1 moveSpeed: 6 jumpImpulse: 10 groundMask: @@ -221,6 +222,7 @@ MonoBehaviour: actionMapName: Player interactActionName: Crouch controlSchemeName: Keyboard&Mouse + gamepadIndex: -1 holdPoint: {fileID: 5569302833446856119} pickupRange: 1 --- !u!1 &6898135930931977916 diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity index 3beab9e..eb0166c 100644 --- a/Assets/Scenes/Level1.unity +++ b/Assets/Scenes/Level1.unity @@ -467,6 +467,7 @@ MonoBehaviour: moveActionName: Move jumpActionName: Jump controlSchemeName: Gamepad + gamepadIndex: 0 moveSpeed: 6 jumpImpulse: 8 groundMask: @@ -670,6 +671,7 @@ MonoBehaviour: moveActionName: Move jumpActionName: Jump controlSchemeName: Gamepad + gamepadIndex: 1 moveSpeed: 6 jumpImpulse: 8 groundMask: @@ -873,6 +875,7 @@ MonoBehaviour: moveActionName: Move jumpActionName: Jump controlSchemeName: Gamepad + gamepadIndex: 2 moveSpeed: 6 jumpImpulse: 8 groundMask: @@ -1072,6 +1075,10 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: interactActionName + value: Interact + objectReference: {fileID: 0} - target: {fileID: 3937090937419967315, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_Name value: Player diff --git a/Assets/Scripts/PlayerPickupController.cs b/Assets/Scripts/PlayerPickupController.cs index b37da49..969f9e9 100644 --- a/Assets/Scripts/PlayerPickupController.cs +++ b/Assets/Scripts/PlayerPickupController.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using UnityEngine.InputSystem; @@ -9,6 +10,8 @@ public class PlayerPickupController : MonoBehaviour private InputActionAsset runtimeActions; private InputAction interactAction; [SerializeField] private string controlSchemeName = ""; + [SerializeField] private int gamepadIndex = -1; + private bool deviceFilterEnabled; [Header("Setup")] public Transform holdPoint; // Empty GameObject above head @@ -29,6 +32,9 @@ public class PlayerPickupController : MonoBehaviour { runtimeActions.bindingMask = InputBinding.MaskByGroup(controlSchemeName); } + deviceFilterEnabled = ShouldFilterDevices(); + ApplyDeviceFilter(); + InputSystem.onDeviceChange += HandleDeviceChange; var map = runtimeActions.FindActionMap(actionMapName, true); interactAction = map.FindAction(interactActionName, true); @@ -53,6 +59,8 @@ public class PlayerPickupController : MonoBehaviour runtimeActions.Disable(); runtimeActions = null; } + + InputSystem.onDeviceChange -= HandleDeviceChange; } private void OnInteractPerformed(InputAction.CallbackContext context) @@ -113,4 +121,82 @@ public class PlayerPickupController : MonoBehaviour heldObject.transform.SetParent(null); heldObject = null; } + + private bool ShouldFilterDevices() + { + return string.Equals(controlSchemeName, "Gamepad", StringComparison.OrdinalIgnoreCase) || gamepadIndex >= 0; + } + + private void ApplyDeviceFilter() + { + if (!deviceFilterEnabled || runtimeActions == null) + { + return; + } + + var targetIndex = ResolveGamepadIndex(); + if (targetIndex < 0) + { + return; + } + + if (Gamepad.all.Count <= targetIndex) + { + runtimeActions.devices = Array.Empty(); + return; + } + + runtimeActions.devices = new InputDevice[] { Gamepad.all[targetIndex] }; + } + + private void HandleDeviceChange(InputDevice device, InputDeviceChange change) + { + if (!deviceFilterEnabled) + { + return; + } + + if (change == InputDeviceChange.Added || change == InputDeviceChange.Removed || change == InputDeviceChange.Reconnected) + { + ApplyDeviceFilter(); + } + } + + private int ResolveGamepadIndex() + { + if (gamepadIndex >= 0) + { + return gamepadIndex; + } + + if (string.IsNullOrWhiteSpace(actionMapName)) + { + return -1; + } + + if (string.Equals(actionMapName, "Player", StringComparison.OrdinalIgnoreCase)) + { + return 0; + } + + var end = actionMapName.Length - 1; + var start = end; + while (start >= 0 && char.IsDigit(actionMapName[start])) + { + start--; + } + + start++; + if (start > end) + { + return -1; + } + + if (!int.TryParse(actionMapName.Substring(start, end - start + 1), out var parsed)) + { + return -1; + } + + return parsed > 0 ? parsed - 1 : -1; + } } diff --git a/Assets/Scripts/PlayerPlatformerController.cs b/Assets/Scripts/PlayerPlatformerController.cs index 0d580a5..2562486 100644 --- a/Assets/Scripts/PlayerPlatformerController.cs +++ b/Assets/Scripts/PlayerPlatformerController.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using UnityEngine.InputSystem; @@ -10,6 +11,7 @@ public class PlayerPlatformerController : MonoBehaviour [SerializeField] private string moveActionName = "Move"; [SerializeField] private string jumpActionName = "Jump"; [SerializeField] private string controlSchemeName = ""; + [SerializeField] private int gamepadIndex = -1; [SerializeField] private float moveSpeed = 6f; [SerializeField] private float jumpImpulse = 8f; [SerializeField] private LayerMask groundMask = ~0; @@ -20,6 +22,7 @@ public class PlayerPlatformerController : MonoBehaviour private InputActionAsset runtimeActions; private InputAction moveAction; private InputAction jumpAction; + private bool deviceFilterEnabled; private void Awake() { @@ -40,6 +43,9 @@ public class PlayerPlatformerController : MonoBehaviour { runtimeActions.bindingMask = InputBinding.MaskByGroup(controlSchemeName); } + deviceFilterEnabled = ShouldFilterDevices(); + ApplyDeviceFilter(); + InputSystem.onDeviceChange += HandleDeviceChange; var map = runtimeActions.FindActionMap(actionMapName, true); moveAction = map.FindAction(moveActionName, true); @@ -68,6 +74,8 @@ public class PlayerPlatformerController : MonoBehaviour runtimeActions.Disable(); runtimeActions = null; } + + InputSystem.onDeviceChange -= HandleDeviceChange; } private void FixedUpdate() @@ -96,6 +104,84 @@ public class PlayerPlatformerController : MonoBehaviour body.AddForce(Vector2.up * jumpImpulse, ForceMode2D.Impulse); } + private bool ShouldFilterDevices() + { + return string.Equals(controlSchemeName, "Gamepad", StringComparison.OrdinalIgnoreCase) || gamepadIndex >= 0; + } + + private void ApplyDeviceFilter() + { + if (!deviceFilterEnabled || runtimeActions == null) + { + return; + } + + var targetIndex = ResolveGamepadIndex(); + if (targetIndex < 0) + { + return; + } + + if (Gamepad.all.Count <= targetIndex) + { + runtimeActions.devices = Array.Empty(); + return; + } + + runtimeActions.devices = new InputDevice[] { Gamepad.all[targetIndex] }; + } + + private void HandleDeviceChange(InputDevice device, InputDeviceChange change) + { + if (!deviceFilterEnabled) + { + return; + } + + if (change == InputDeviceChange.Added || change == InputDeviceChange.Removed || change == InputDeviceChange.Reconnected) + { + ApplyDeviceFilter(); + } + } + + private int ResolveGamepadIndex() + { + if (gamepadIndex >= 0) + { + return gamepadIndex; + } + + if (string.IsNullOrWhiteSpace(actionMapName)) + { + return -1; + } + + if (string.Equals(actionMapName, "Player", StringComparison.OrdinalIgnoreCase)) + { + return 0; + } + + var end = actionMapName.Length - 1; + var start = end; + while (start >= 0 && char.IsDigit(actionMapName[start])) + { + start--; + } + + start++; + if (start > end) + { + return -1; + } + + if (!int.TryParse(actionMapName.Substring(start, end - start + 1), out var parsed)) + { + return -1; + } + + return parsed > 0 ? parsed - 1 : -1; + } + private bool IsGrounded() { var bounds = bodyCollider.bounds; From ca081179f9d5489f4ca987cb3fbe8772e5c3d5a4 Mon Sep 17 00:00:00 2001 From: Walter Date: Sat, 31 Jan 2026 18:07:50 -0600 Subject: [PATCH 3/4] 4 Players Baby --- Assets/Scenes/Experiment.unity | 229 ++++++++++++++++++++++++++++++++- Assets/Scenes/Level1.unity | 16 +++ 2 files changed, 241 insertions(+), 4 deletions(-) diff --git a/Assets/Scenes/Experiment.unity b/Assets/Scenes/Experiment.unity index f442550..c82d275 100644 --- a/Assets/Scenes/Experiment.unity +++ b/Assets/Scenes/Experiment.unity @@ -119,6 +119,103 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1001 &29258076 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.x + value: 1.13 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.y + value: -2.33 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: actionMapName + value: Player2 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: interactActionName + value: Interact + objectReference: {fileID: 0} + - target: {fileID: 3937090937419967315, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Name + value: Player (4) + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: moveSpeed + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: jumpImpulse + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: actionMapName + value: Player2 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} + - target: {fileID: 8276105153445234536, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_GravityScale + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} --- !u!1 &375061914 GameObject: m_ObjectHideFlags: 0 @@ -188,6 +285,103 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Assembly-CSharp::ScoreManager Score: 0 +--- !u!1001 &377513953 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.x + value: 0.43 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.y + value: -2.37 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: actionMapName + value: Player2 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: interactActionName + value: Interact + objectReference: {fileID: 0} + - target: {fileID: 3937090937419967315, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Name + value: Player (3) + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: moveSpeed + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: jumpImpulse + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: actionMapName + value: Player2 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} + - target: {fileID: 8276105153445234536, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_GravityScale + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} --- !u!1 &418512664 GameObject: m_ObjectHideFlags: 0 @@ -1071,11 +1265,11 @@ PrefabInstance: m_Modifications: - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.x - value: -2.6910105 + value: -1.01 objectReference: {fileID: 0} - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.y - value: -3.2443483 + value: -2.36 objectReference: {fileID: 0} - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.z @@ -1109,6 +1303,14 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: interactActionName value: Interact @@ -1117,6 +1319,14 @@ PrefabInstance: propertyPath: m_Name value: Player (1) objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} - target: {fileID: 8276105153445234536, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_GravityScale value: 2 @@ -1485,6 +1695,7 @@ MonoBehaviour: moveActionName: Move jumpActionName: Jump controlSchemeName: + gamepadIndex: -1 moveSpeed: 6 jumpImpulse: 8 groundMask: @@ -2056,11 +2267,11 @@ PrefabInstance: m_Modifications: - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.x - value: 2.3946345 + value: -0.37 objectReference: {fileID: 0} - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.y - value: -3.3612046 + value: -2.36 objectReference: {fileID: 0} - target: {fileID: 3009946143020725610, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_LocalPosition.z @@ -2094,6 +2305,10 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 1 + objectReference: {fileID: 0} - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: actionMapName value: Player2 @@ -2118,6 +2333,10 @@ PrefabInstance: propertyPath: jumpImpulse value: 10 objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 1 + objectReference: {fileID: 0} - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: actionMapName value: Player2 @@ -2603,4 +2822,6 @@ SceneRoots: - {fileID: 1759124604} - {fileID: 792686806} - {fileID: 1685410085} + - {fileID: 377513953} + - {fileID: 29258076} - {fileID: 375061916} diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity index eb0166c..7a71250 100644 --- a/Assets/Scenes/Level1.unity +++ b/Assets/Scenes/Level1.unity @@ -1075,6 +1075,14 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gampad + objectReference: {fileID: 0} - target: {fileID: 3659140714710275197, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: interactActionName value: Interact @@ -1083,6 +1091,14 @@ PrefabInstance: propertyPath: m_Name value: Player objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: gamepadIndex + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: controlSchemeName + value: Gamepad + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] From 412193a74b4bb6b24d691884da72787e4056b82b Mon Sep 17 00:00:00 2001 From: Walter Date: Sat, 31 Jan 2026 18:55:27 -0600 Subject: [PATCH 4/4] Candy --- Assets/Art/Final Sprites.meta | 8 ++ Assets/Art/Final Sprites/Candy.png.meta | 143 ++++++++++++++++++++++++ Assets/Prefabs/Treat.prefab | 4 +- 3 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 Assets/Art/Final Sprites.meta create mode 100644 Assets/Art/Final Sprites/Candy.png.meta diff --git a/Assets/Art/Final Sprites.meta b/Assets/Art/Final Sprites.meta new file mode 100644 index 0000000..8ed993f --- /dev/null +++ b/Assets/Art/Final Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c837a5f2052e2924f8b35a0fcf565f57 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Final Sprites/Candy.png.meta b/Assets/Art/Final Sprites/Candy.png.meta new file mode 100644 index 0000000..c20464d --- /dev/null +++ b/Assets/Art/Final Sprites/Candy.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: dc90badfe9725d24aacabda7750ad3a4 +TextureImporter: + internalIDToNameTable: + - first: + 213: -3366272070310193754 + second: Candy_0 + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Candy_0 + rect: + serializedVersion: 2 + x: 122 + y: 215 + width: 151 + height: 79 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6a597d723699841d0800000000000000 + internalID: -3366272070310193754 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + Candy_0: -3366272070310193754 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Treat.prefab b/Assets/Prefabs/Treat.prefab index c2ac06a..4577bf2 100644 --- a/Assets/Prefabs/Treat.prefab +++ b/Assets/Prefabs/Treat.prefab @@ -83,8 +83,8 @@ SpriteRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_MaskInteraction: 0 - m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} - m_Color: {r: 0.4018334, g: 0.8113208, b: 0.46312103, a: 1} + m_Sprite: {fileID: -3366272070310193754, guid: dc90badfe9725d24aacabda7750ad3a4, type: 3} + m_Color: {r: 0.8773585, g: 0.26072446, b: 0.8517005, a: 1} m_FlipX: 0 m_FlipY: 0 m_DrawMode: 0