From a348f3c6a4833c69aeba23e54af751ac257342a1 Mon Sep 17 00:00:00 2001 From: JoansLink00 Date: Sat, 24 Jan 2026 15:00:22 +0100 Subject: [PATCH] Local Multiplayer --- Assets/Scenes/SampleScene.unity | 271 ++++++++++++++++++++++++++++ Assets/Scripts/Player/PlayerMove.cs | 66 +++++-- ProjectSettings/InputManager.asset | 45 ++++- 3 files changed, 364 insertions(+), 18 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index b7c5354..ebca90a 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -186,6 +186,73 @@ SphereCollider: serializedVersion: 3 m_Radius: 2 m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &131622071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 131622072} + - component: {fileID: 131622074} + - component: {fileID: 131622073} + m_Layer: 0 + m_Name: StandUpCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &131622072 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131622071} + 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: 2029238169} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &131622073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131622071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19aae932aa4446c4788d84deb1116128, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::StandUpCollider + ispushing: 0 +--- !u!135 &131622074 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131622071} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 2 + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &209519236 GameObject: m_ObjectHideFlags: 0 @@ -1111,6 +1178,8 @@ MonoBehaviour: maxspeed: 15 slide: 0.2 standUp: {fileID: 0} + inputNameHorizontal: Horizontal 1 + inputNameVertical: Vertical 1 --- !u!114 &955231361 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1337,6 +1406,207 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1940342122} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2029238162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2029238169} + - component: {fileID: 2029238168} + - component: {fileID: 2029238167} + - component: {fileID: 2029238166} + - component: {fileID: 2029238170} + - component: {fileID: 2029238165} + - component: {fileID: 2029238171} + - component: {fileID: 2029238163} + m_Layer: 0 + m_Name: Penguin (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2029238163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8fc662358fbf8394d804207b2a8c9868, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PositionReset + StartPos: {x: -15.5, y: 1.23, z: 8.07} +--- !u!54 &2029238165 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + serializedVersion: 5 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 112 + m_CollisionDetection: 0 +--- !u!136 &2029238166 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2029238167 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + 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: c2e40fa84d53ccd428f640eac126b1fb, 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: 3 + 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: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2029238168 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2029238169 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -15.5, y: 1.23, z: 8.07} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 131622072} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2029238170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5295d4003543e02478b7a03f18b1fc62, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Player2 + basespeed: 8 + speed: 8 + speedincrease: 0.05 + maxspeed: 15 + rb: {fileID: 0} + slide: 0.2 + moveDirection: {x: 0, y: 0, z: 0} + vertical: 0 + horizontal: 0 + standUp: {fileID: 0} +--- !u!114 &2029238171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2029238162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b9bab48a629093449f53dc5ea63d752, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerMove + basespeed: 8 + speed: 8 + speedincrease: 0.05 + maxspeed: 12 + slide: 0.2 + standUp: {fileID: 0} + inputNameHorizontal: Horizontal 2 + inputNameVertical: Vertical 2 --- !u!1 &2123298904 GameObject: m_ObjectHideFlags: 0 @@ -1457,6 +1727,7 @@ SceneRoots: - {fileID: 410087041} - {fileID: 832575519} - {fileID: 955231359} + - {fileID: 2029238169} - {fileID: 319279597} - {fileID: 1604116872} - {fileID: 1262927944} diff --git a/Assets/Scripts/Player/PlayerMove.cs b/Assets/Scripts/Player/PlayerMove.cs index 2463c99..b645425 100644 --- a/Assets/Scripts/Player/PlayerMove.cs +++ b/Assets/Scripts/Player/PlayerMove.cs @@ -18,28 +18,31 @@ public class PlayerMove : MonoBehaviour bool vertical; private bool horizontal; - [SerializeField] private StandUpCollider standUp; + [SerializeField] StandUpCollider standUp; + [SerializeField] private string inputNameHorizontal; + [SerializeField] private string inputNameVertical; + + private void Start() { rb = GetComponent(); - standUp = FindAnyObjectByType(typeof(StandUpCollider)) as StandUpCollider; + standUp = GetComponentInChildren(); } void Update() { - float horizontalInput = Input.GetAxis("Horizontal"); - float verticalInput = Input.GetAxis("Vertical"); + float horizontalInput = Input.GetAxis(inputNameHorizontal); + float verticalInput = Input.GetAxis(inputNameVertical); horizontalInput = Mathf.Round(horizontalInput); verticalInput = Mathf.Round(verticalInput); - if (horizontalInput != 0 && horizontal == true) { if (!standUp.ispushing) { - transform.rotation = Quaternion.Euler(0f, 0f, 90f); + transform.rotation = Quaternion.Euler(0f, 0f, 90f); } vertical = false; moveDirection = new Vector3(horizontalInput,0, 0); @@ -49,7 +52,6 @@ public class PlayerMove : MonoBehaviour { speed += speedincrease; } - } else if (verticalInput != 0 && vertical == true) { @@ -65,20 +67,60 @@ public class PlayerMove : MonoBehaviour { speed += speedincrease; } + } else { StartCoroutine(Slide(slide)); transform.rotation = Quaternion.Euler(0f, 0f, 0f); - } + transform.Translate(moveDirection * speed * Time.deltaTime, Space.World); + + } - - transform.Translate(moveDirection * speed * Time.deltaTime, Space.World); + private void Move(float _horizontalInput, float _verticalInput) + { + if (_horizontalInput != 0 && horizontal == true) + { + if (!standUp.ispushing) + { + transform.rotation = Quaternion.Euler(0f, 0f, 90f); + } + vertical = false; + moveDirection = new Vector3(_horizontalInput,0, 0); + moveDirection.Normalize(); + + if (!vertical && speed <= maxspeed && !standUp.ispushing) + { + speed += speedincrease; + } + } + else if (_verticalInput != 0 && vertical == true) + { + if (!standUp.ispushing) + { + transform.rotation = Quaternion.Euler(90f, 0f, 0f); + } + horizontal = false; + moveDirection = new Vector3(0, 0, _verticalInput); + moveDirection.Normalize(); + + if (!horizontal && speed <= maxspeed && !standUp.ispushing) + { + speed += speedincrease; + } + + } + // else + // { + // StartCoroutine(Slide(slide)); + // transform.rotation = Quaternion.Euler(0f, 0f, 0f); + // } + // + // transform.Translate(moveDirection * speed * Time.deltaTime, Space.World); + //Debug.Log(moveDirection); } - - IEnumerator Slide(float delay) { diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset index b16147e..57b7bc0 100644 --- a/ProjectSettings/InputManager.asset +++ b/ProjectSettings/InputManager.asset @@ -6,11 +6,11 @@ InputManager: serializedVersion: 2 m_Axes: - serializedVersion: 3 - m_Name: Horizontal + m_Name: Horizontal 1 descriptiveName: descriptiveNegativeName: - negativeButton: left - positiveButton: right + negativeButton: + positiveButton: altNegativeButton: a altPositiveButton: d gravity: 3 @@ -22,11 +22,27 @@ InputManager: axis: 0 joyNum: 0 - serializedVersion: 3 - m_Name: Vertical + m_Name: Horizontal 2 descriptiveName: descriptiveNegativeName: - negativeButton: down - positiveButton: up + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical 1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: altNegativeButton: s altPositiveButton: w gravity: 3 @@ -37,6 +53,22 @@ InputManager: type: 0 axis: 0 joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical 2 + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: @@ -485,3 +517,4 @@ InputManager: type: 2 axis: 5 joyNum: 0 + m_UsePhysicalKeys: 1