diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index a6dcd2f..089c537 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,212 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &37094156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 37094158} + - component: {fileID: 37094157} + - component: {fileID: 37094159} + - component: {fileID: 37094161} + - component: {fileID: 37094160} + - component: {fileID: 37094162} + - component: {fileID: 37094163} + m_Layer: 0 + m_Name: Post-Processing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!20 &37094157 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.46422216, g: 0.51849216, b: 0.6037736, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 40d6d138feabb2440b709406c89491ac, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &37094158 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + 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: 944706249} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &37094159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73886bd5d98b4e13af3b19513287a041, type: 3} + m_Name: + m_EditorClassIdentifier: + mouseSensitivity: 100 + playerBody: {fileID: 944706249} +--- !u!114 &37094160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b9a305e18de0c04dbd257a21cd47087, type: 3} + m_Name: + m_EditorClassIdentifier: + sharedProfile: {fileID: 11400000, guid: 6e8d6d105a8a2194c8c10888712f88ae, type: 2} + isGlobal: 1 + blendDistance: 0 + weight: 1 + priority: 0 +--- !u!114 &37094161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} + m_Name: + m_EditorClassIdentifier: + volumeTrigger: {fileID: 37094158} + volumeLayer: + serializedVersion: 2 + m_Bits: 97 + stopNaNPropagation: 1 + finalBlitToCameraTarget: 0 + antialiasingMode: 0 + temporalAntialiasing: + jitterSpread: 0.75 + sharpness: 0.25 + stationaryBlending: 0.95 + motionBlending: 0.85 + subpixelMorphologicalAntialiasing: + quality: 2 + fastApproximateAntialiasing: + fastMode: 0 + keepAlpha: 0 + fog: + enabled: 1 + excludeSkybox: 1 + debugLayer: + lightMeter: + width: 512 + height: 256 + showCurves: 1 + histogram: + width: 512 + height: 256 + channel: 3 + waveform: + exposure: 0.12 + height: 256 + vectorscope: + size: 256 + exposure: 0.12 + overlaySettings: + linearDepth: 0 + motionColorIntensity: 4 + motionGridSize: 64 + colorBlindnessType: 0 + colorBlindnessStrength: 1 + m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2} + m_ShowToolkit: 0 + m_ShowCustomSorter: 0 + breakBeforeColorGrading: 0 + m_BeforeTransparentBundles: [] + m_BeforeStackBundles: [] + m_AfterStackBundles: [] +--- !u!114 &37094162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd8e51b43a0c4d4ca7e732246b8ad2e6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &37094163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37094156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d64f284209414d79a3996a0a6d1748b4, type: 3} + m_Name: + m_EditorClassIdentifier: + cameraTransform: {fileID: 37094158} + amplitude: 0.1 + frequency: 20 --- !u!1 &127902481 GameObject: m_ObjectHideFlags: 0 @@ -137,7 +343,7 @@ GameObject: - component: {fileID: 127902482} - component: {fileID: 127902486} m_Layer: 0 - m_Name: Sphere + m_Name: SphereCant m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -184,7 +390,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -271,7 +477,7 @@ GameObject: - component: {fileID: 183733061} - component: {fileID: 183733062} m_Layer: 0 - m_Name: Cube + m_Name: CubeCanBeAct m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -318,7 +524,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -402,6 +608,78 @@ Rigidbody: m_Interpolate: 0 m_Constraints: 0 m_CollisionDetection: 0 +--- !u!1 &675862481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 675862482} + - component: {fileID: 675862484} + - component: {fileID: 675862483} + m_Layer: 5 + m_Name: RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &675862482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675862481} + 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: 1107264578} + 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 &675862483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675862481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 40d6d138feabb2440b709406c89491ac, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &675862484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675862481} + m_CullTransparentMesh: 1 --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 @@ -511,7 +789,7 @@ GameObject: - component: {fileID: 944706250} - component: {fileID: 944706251} m_Layer: 0 - m_Name: Capsule + m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -604,6 +882,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 963194228} + - {fileID: 37094158} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &944706250 @@ -620,7 +899,9 @@ MonoBehaviour: m_EditorClassIdentifier: rb: {fileID: 944706251} animator: {fileID: 0} - maxVelocity: 6 + maxVelocity: 4 + postProcessVolume: {fileID: 37094160} + postProcessCamera: {fileID: 37094157} --- !u!54 &944706251 Rigidbody: m_ObjectHideFlags: 0 @@ -686,8 +967,8 @@ Camera: m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.47076362, g: 0.54817104, b: 0.6698113, a: 0} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 @@ -716,7 +997,7 @@ Camera: m_Depth: -1 m_CullingMask: serializedVersion: 2 - m_Bits: 4294967295 + m_Bits: 96 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 @@ -880,6 +1161,7 @@ RectTransform: m_Children: - {fileID: 1644802856} - {fileID: 1157830469} + - {fileID: 675862482} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -998,7 +1280,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1055,7 +1337,7 @@ GameObject: - component: {fileID: 1644802858} - component: {fileID: 1644802857} m_Layer: 5 - m_Name: Text (TMP) + m_Name: Arror m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Scripts/Camera/CameraPostProcessing.cs b/Assets/Scripts/Camera/CameraPostProcessing.cs new file mode 100644 index 0000000..07db58e --- /dev/null +++ b/Assets/Scripts/Camera/CameraPostProcessing.cs @@ -0,0 +1,35 @@ +using Event; +using UnityEngine; +using UnityEngine.Rendering.PostProcessing; + +namespace Camera +{ + public class CameraPostProcessing : MonoBehaviour + { + private UnityEngine.Camera _camera; + private PostProcessVolume _processVolume; + private void Awake() + { + _camera = GetComponent(); + _processVolume = GetComponent(); + } + + private void Start() + { + EventManager.Instance.PlayerRunning += PostProcess; + EventManager.Instance.PlayerRunStop += ProcessingStop; + } + + private void PostProcess() + { + _camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 90f, Time.deltaTime * 10f); + _processVolume.profile.GetSetting().intensity.value = Mathf.Lerp(_processVolume.profile.GetSetting().intensity.value, 1f, Time.deltaTime * 10f); + } + + private void ProcessingStop() + { + _processVolume.profile.GetSetting().intensity.value = Mathf.Lerp(_processVolume.profile.GetSetting().intensity.value, 0f, Time.deltaTime * 10f); + _camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 60f, Time.deltaTime * 10f); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Camera/CameraPostProcessing.cs.meta b/Assets/Scripts/Camera/CameraPostProcessing.cs.meta new file mode 100644 index 0000000..ea35591 --- /dev/null +++ b/Assets/Scripts/Camera/CameraPostProcessing.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dd8e51b43a0c4d4ca7e732246b8ad2e6 +timeCreated: 1726297370 \ No newline at end of file diff --git a/Assets/Scripts/Camera/CameraShake.cs b/Assets/Scripts/Camera/CameraShake.cs new file mode 100644 index 0000000..56d2d2c --- /dev/null +++ b/Assets/Scripts/Camera/CameraShake.cs @@ -0,0 +1,68 @@ +using Event; +using UnityEngine; + +namespace Camera +{ + public class CameraShake : MonoBehaviour + { + public Transform cameraTransform; + public float amplitude = 0.05f; + public float frequency = 10.0f; + + private Vector3 _originalPos; + private bool _isRunning; + private bool _isWalking; + private void Start() + { + _originalPos = cameraTransform.localPosition; + EventManager.Instance.PlayerRunning += OnPlayerRunning; + EventManager.Instance.PlayerRunStop += StopRunning; + EventManager.Instance.PlayerWalking += OnPlayerWalking; + EventManager.Instance.PlayerWalkStop += StopWalking; + } + + + private void OnPlayerRunning() + { + _isRunning = true; + } + + private void OnPlayerWalking() + { + _isWalking = true; + } + + private void StopRunning() + { + _isRunning = false; + } + + private void StopWalking() + { + _isWalking = false; + } + + private void Update() + { + if (_isRunning) + { + var xShake = Mathf.Sin(Time.time * frequency) * amplitude; + var yShake = Mathf.Cos(Time.time * frequency * 2) * amplitude * 0.5f; + + cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0); + } + else + { + if (_isWalking) + { + var xShake = Mathf.Sin(Time.time * frequency / 2) * amplitude; + var yShake = Mathf.Cos(Time.time * frequency / 2 * 2) * amplitude * 0.5f; + + cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0); + }else + cameraTransform.localPosition = _originalPos; + } + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Camera/CameraShake.cs.meta b/Assets/Scripts/Camera/CameraShake.cs.meta new file mode 100644 index 0000000..e823519 --- /dev/null +++ b/Assets/Scripts/Camera/CameraShake.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d64f284209414d79a3996a0a6d1748b4 +timeCreated: 1726297975 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs new file mode 100644 index 0000000..705b675 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerRunStartHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs.meta new file mode 100644 index 0000000..eef5e1d --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunStartHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 80c4ab8259fd439ab961f53ca470750b +timeCreated: 1726298205 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs new file mode 100644 index 0000000..d19ad4f --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerRunStopHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs.meta new file mode 100644 index 0000000..6c7233d --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunStopHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e59b8b89219149f3b17c92a1fcb47166 +timeCreated: 1726297713 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs new file mode 100644 index 0000000..5dc3aaf --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerRunningHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs.meta new file mode 100644 index 0000000..dd48e03 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerRunningHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7a6ecbb68bac4f7d9631c32554b2c191 +timeCreated: 1726297312 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs new file mode 100644 index 0000000..5373e04 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerWalkStartHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs.meta new file mode 100644 index 0000000..c91a138 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkStartHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0a1e2607d7a84dab8be4a3433c5a88c1 +timeCreated: 1726298933 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs new file mode 100644 index 0000000..cb0bf29 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerWalkStopHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs.meta new file mode 100644 index 0000000..dafd571 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkStopHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2cd3785317b44e7fae2becaae10a3029 +timeCreated: 1726298918 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs b/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs new file mode 100644 index 0000000..52ec35d --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs @@ -0,0 +1,4 @@ +namespace Event.EventHandler +{ + public delegate void PlayerWalkingHandler(); +} \ No newline at end of file diff --git a/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs.meta b/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs.meta new file mode 100644 index 0000000..352af44 --- /dev/null +++ b/Assets/Scripts/Event/EventHandler/PlayerWalkingHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 38833c7bee844164a50a86b10a7790ee +timeCreated: 1726298881 \ No newline at end of file diff --git a/Assets/Scripts/Event/EventManager.cs b/Assets/Scripts/Event/EventManager.cs index cced184..5c2a6cf 100644 --- a/Assets/Scripts/Event/EventManager.cs +++ b/Assets/Scripts/Event/EventManager.cs @@ -34,6 +34,14 @@ namespace Event public event CameraInterActHandler CameraInterAct; public event DialogPopHandler DialogPop; + + public event PlayerRunStartHandler PlayerRunStart; + public event PlayerRunningHandler PlayerRunning; + + public event PlayerRunStopHandler PlayerRunStop; + public event PlayerWalkStartHandler PlayerWalkStart; + public event PlayerWalkStopHandler PlayerWalkStop; + public event PlayerWalkingHandler PlayerWalking; public void OnCameraInterAct(GameObject item) { @@ -44,5 +52,34 @@ namespace Event { DialogPop?.Invoke(new DialogPopArgs(index)); } + + public void OnPlayerWalkStart() + { + PlayerWalkStart?.Invoke(); + } + + public void OnPlayerWalkStop() + { + PlayerWalkStop?.Invoke(); + } + + public void OnPlayerWalking() + { + PlayerWalking?.Invoke(); + } + + public void OnPlayerRunStart() + { + PlayerRunStart?.Invoke(); + } + public void OnPlayerRunning() + { + PlayerRunning?.Invoke(); + } + + public void OnPlayerRunStop() + { + PlayerRunStop?.Invoke(); + } } } \ No newline at end of file diff --git a/Assets/Scripts/Keyboard/KeySettingManager.cs b/Assets/Scripts/Keyboard/KeySettingManager.cs index cab30ca..dfb993e 100644 --- a/Assets/Scripts/Keyboard/KeySettingManager.cs +++ b/Assets/Scripts/Keyboard/KeySettingManager.cs @@ -58,6 +58,7 @@ namespace Keyboard keyMappings.Add(new KeyMapping("Right", KeyCode.D)); keyMappings.Add(new KeyMapping("Up", KeyCode.W)); keyMappings.Add(new KeyMapping("Down", KeyCode.S)); + keyMappings.Add(new KeyMapping("Run", KeyCode.LeftShift)); SaveKeySettings(); } } diff --git a/Assets/Scripts/Player/PlayerMotion.cs b/Assets/Scripts/Player/PlayerMotion.cs index e059e7c..be6233d 100644 --- a/Assets/Scripts/Player/PlayerMotion.cs +++ b/Assets/Scripts/Player/PlayerMotion.cs @@ -1,5 +1,7 @@ -using Keyboard; +using Event; +using Keyboard; using UnityEngine; +using UnityEngine.Rendering.PostProcessing; namespace Player { @@ -8,7 +10,11 @@ namespace Player [SerializeField] private Rigidbody rb; [SerializeField] private Animator animator; [SerializeField] private float maxVelocity; + [SerializeField] private PostProcessVolume postProcessVolume; + [SerializeField] private UnityEngine.Camera postProcessCamera; private Vector3 _velocity; + private bool _isRunning; + private bool _isWalking; private void Update() { @@ -26,7 +32,36 @@ namespace Player temp.y = rb.velocity.y; rb.velocity = temp; } - rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity); + if (Input.GetKey(KeySettingManager.Instance.GetKey("Run")) && KeySettingManager.Instance.Direction != Vector2.zero) + { + if (!_isRunning) + { + _isRunning = true; + _isWalking = false; + EventManager.Instance.OnPlayerWalkStop(); + EventManager.Instance.OnPlayerRunStart(); + } + EventManager.Instance.OnPlayerRunning(); + rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity+2); + } + if (!Input.GetKey(KeySettingManager.Instance.GetKey("Run")) && KeySettingManager.Instance.Direction != Vector2.zero) + { + if (!_isWalking) + { + _isRunning = false; + _isWalking = true; + EventManager.Instance.OnPlayerRunStop(); + EventManager.Instance.OnPlayerWalkStart(); + } + EventManager.Instance.OnPlayerWalking(); + rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity); + } + + if (KeySettingManager.Instance.Direction == Vector2.zero) + { + EventManager.Instance.OnPlayerRunStop(); + EventManager.Instance.OnPlayerWalkStop(); + } } } } \ No newline at end of file