From 565f2e043bf1149a866e977bdae759c57467d61b Mon Sep 17 00:00:00 2001 From: Dal4segno Date: Fri, 16 Jan 2026 01:11:13 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=95=A0=EB=8B=88?= =?UTF-8?q?=EB=A9=94=EC=9D=B4=EC=85=98=20=EB=B0=8F=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit kaykit 애셋 일부 적용 --- Assets/InputSystem_Actions.cs | 39 ++ Assets/InputSystem_Actions.inputactions | 20 + Assets/New Animator Controller.controller | 364 +++++++++++++++++ .../New Animator Controller.controller.meta | 8 + Assets/Prefabs/Player.prefab | 187 +++++++++ Assets/Prefabs/Player.prefab.meta | 7 + Assets/Prefabs/Tunnel.prefab | 69 ---- Assets/Scenes/DefenceScene.unity | 377 +++++++++--------- .../Player/PlayerAnimationController.cs | 40 ++ .../Player/PlayerAnimationController.cs.meta | 2 + Assets/Scripts/Player/PlayerBuildInteract.cs | 58 --- .../Player/PlayerBuildInteract.cs.meta | 2 - Assets/Scripts/Player/PlayerInteraction.cs | 79 ---- .../Scripts/Player/PlayerInteraction.cs.meta | 2 - Assets/Scripts/Player/PlayerMovement.cs | 118 ++++-- 15 files changed, 942 insertions(+), 430 deletions(-) create mode 100644 Assets/New Animator Controller.controller create mode 100644 Assets/New Animator Controller.controller.meta create mode 100644 Assets/Prefabs/Player.prefab create mode 100644 Assets/Prefabs/Player.prefab.meta create mode 100644 Assets/Scripts/Player/PlayerAnimationController.cs create mode 100644 Assets/Scripts/Player/PlayerAnimationController.cs.meta delete mode 100644 Assets/Scripts/Player/PlayerBuildInteract.cs delete mode 100644 Assets/Scripts/Player/PlayerBuildInteract.cs.meta delete mode 100644 Assets/Scripts/Player/PlayerInteraction.cs delete mode 100644 Assets/Scripts/Player/PlayerInteraction.cs.meta diff --git a/Assets/InputSystem_Actions.cs b/Assets/InputSystem_Actions.cs index d398441..87c7eb2 100644 --- a/Assets/InputSystem_Actions.cs +++ b/Assets/InputSystem_Actions.cs @@ -190,6 +190,15 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable ""processors"": """", ""interactions"": """", ""initialStateCheck"": false + }, + { + ""name"": ""Attack"", + ""type"": ""Button"", + ""id"": ""23075c94-90f6-437e-be80-4f36760bdf24"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false } ], ""bindings"": [ @@ -555,6 +564,17 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable ""action"": ""Cancel"", ""isComposite"": false, ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""6de8107e-a270-4bef-80c3-d263dc2d5928"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false } ] }, @@ -1151,6 +1171,7 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable m_Player_ToggleBuild = m_Player.FindAction("ToggleBuild", throwIfNotFound: true); m_Player_Build = m_Player.FindAction("Build", throwIfNotFound: true); m_Player_Cancel = m_Player.FindAction("Cancel", throwIfNotFound: true); + m_Player_Attack = m_Player.FindAction("Attack", throwIfNotFound: true); // UI m_UI = asset.FindActionMap("UI", throwIfNotFound: true); m_UI_Navigate = m_UI.FindAction("Navigate", throwIfNotFound: true); @@ -1255,6 +1276,7 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable private readonly InputAction m_Player_ToggleBuild; private readonly InputAction m_Player_Build; private readonly InputAction m_Player_Cancel; + private readonly InputAction m_Player_Attack; /// /// Provides access to input actions defined in input action map "Player". /// @@ -1311,6 +1333,10 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable /// public InputAction @Cancel => m_Wrapper.m_Player_Cancel; /// + /// Provides access to the underlying input action "Player/Attack". + /// + public InputAction @Attack => m_Wrapper.m_Player_Attack; + /// /// Provides access to the underlying input action map instance. /// public InputActionMap Get() { return m_Wrapper.m_Player; } @@ -1369,6 +1395,9 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable @Cancel.started += instance.OnCancel; @Cancel.performed += instance.OnCancel; @Cancel.canceled += instance.OnCancel; + @Attack.started += instance.OnAttack; + @Attack.performed += instance.OnAttack; + @Attack.canceled += instance.OnAttack; } /// @@ -1413,6 +1442,9 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable @Cancel.started -= instance.OnCancel; @Cancel.performed -= instance.OnCancel; @Cancel.canceled -= instance.OnCancel; + @Attack.started -= instance.OnAttack; + @Attack.performed -= instance.OnAttack; + @Attack.canceled -= instance.OnAttack; } /// @@ -1790,6 +1822,13 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable /// /// void OnCancel(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Attack" is either , or . + /// + /// + /// + /// + void OnAttack(InputAction.CallbackContext context); } /// /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "UI" which allows adding and removing callbacks. diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 2484184..8fe459c 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -104,6 +104,15 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "Attack", + "type": "Button", + "id": "23075c94-90f6-437e-be80-4f36760bdf24", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -469,6 +478,17 @@ "action": "Cancel", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "6de8107e-a270-4bef-80c3-d263dc2d5928", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false } ] }, diff --git a/Assets/New Animator Controller.controller b/Assets/New Animator Controller.controller new file mode 100644 index 0000000..aad5a16 --- /dev/null +++ b/Assets/New Animator Controller.controller @@ -0,0 +1,364 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-7770937745220071498 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Interact + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1379410103905664400} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 1701519168366769839, guid: bc3e0d4ff7ebc104087a1dc5916cf7bb, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &-7242892618301913691 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: isGrounded + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 397540454560189892} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.1 + m_TransitionOffset: 0 + m_ExitTime: 0.78571427 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Animator Controller + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: MoveSpeed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Attack + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isGrounded + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Interact + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 7170021844816565940} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &397540454560189892 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Locomotion + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 1610424884888369095} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &404349288434198591 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: isGrounded + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7354546966716114735} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 0 +--- !u!1101 &954603756796225056 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Attack + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1042583441410514574} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1042583441410514574 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Melee_1H_Attack_Chop + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1660218971867841857} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 4043807988371827432, guid: 79b3d1d24644f7d4987c6bdd614dd439, type: 3} + m_Tag: Attack + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &1379410103905664400 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 397540454560189892} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.8076923 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!206 &1610424884888369095 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 345275505875579249, guid: bc3e0d4ff7ebc104087a1dc5916cf7bb, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: MoveSpeed + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: -1640158340307531623, guid: 9e25e6839de2eb7449e0bbf11086c326, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: MoveSpeed + m_Mirror: 0 + m_BlendParameter: MoveSpeed + m_BlendParameterY: MoveSpeed + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!1101 &1660218971867841857 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 397540454560189892} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.765625 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &7110953658697184367 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Interact + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7770937745220071498} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1107 &7170021844816565940 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 397540454560189892} + m_Position: {x: 560, y: 10, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7770937745220071498} + m_Position: {x: 340, y: 80, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1042583441410514574} + m_Position: {x: 340, y: -60, z: 0} + - serializedVersion: 1 + m_State: {fileID: 7354546966716114735} + m_Position: {x: 340, y: -200, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: + - {fileID: 7110953658697184367} + - {fileID: 954603756796225056} + - {fileID: 404349288434198591} + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 80, y: 10, z: 0} + m_EntryPosition: {x: 580, y: 250, z: 0} + m_ExitPosition: {x: 790, y: 10, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 397540454560189892} +--- !u!1102 &7354546966716114735 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Jump_Full_Short + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -7242892618301913691} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 1683828920807373193, guid: 9e25e6839de2eb7449e0bbf11086c326, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/New Animator Controller.controller.meta b/Assets/New Animator Controller.controller.meta new file mode 100644 index 0000000..720a75d --- /dev/null +++ b/Assets/New Animator Controller.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa53deee6146e7845a197a4031f40bb3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab new file mode 100644 index 0000000..a7a3c75 --- /dev/null +++ b/Assets/Prefabs/Player.prefab @@ -0,0 +1,187 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &3356319783404427244 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_Name + value: Player + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_Layer + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_TagString + value: Player + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 2502853225347469563} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 5427120340594505786} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 7743182389554125766} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 8355519159906864452} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 5870045807328036684} + m_SourcePrefab: {fileID: 100100000, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} +--- !u!1 &2473992278589500093 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + m_PrefabInstance: {fileID: 3356319783404427244} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2502853225347469563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2473992278589500093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 736c03e837e6b074ba7f90b813050aed, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerInteractionController + range: 3 + interactableLayer: + serializedVersion: 2 + m_Bits: 0 + constructionLayer: + serializedVersion: 2 + m_Bits: 0 + buildSpeedMultiplier: 2 +--- !u!114 &5427120340594505786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2473992278589500093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 768ea4bbb68b30140921c7192ebe2852, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement + moveSpeed: 5 + rotationSpeed: 10 + jumpHeight: 1.5 + gravity: -19.62 + interactRange: 3 + interactableLayer: + serializedVersion: 2 + m_Bits: 1024 +--- !u!143 &7743182389554125766 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2473992278589500093} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 2.4 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 1, z: 0} +--- !u!114 &8355519159906864452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2473992278589500093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d71ce06d133743140877345b807f33ad, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::TunnelTraveler + travelSpeed: 20 +--- !u!95 &5870045807328036684 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2473992278589500093} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + m_Controller: {fileID: 9100000, guid: aa53deee6146e7845a197a4031f40bb3, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 diff --git a/Assets/Prefabs/Player.prefab.meta b/Assets/Prefabs/Player.prefab.meta new file mode 100644 index 0000000..70b41fb --- /dev/null +++ b/Assets/Prefabs/Player.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fe3685eff459f8b4d8b8d0786aad07de +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Tunnel.prefab b/Assets/Prefabs/Tunnel.prefab index 635783c..ab33ae2 100644 --- a/Assets/Prefabs/Tunnel.prefab +++ b/Assets/Prefabs/Tunnel.prefab @@ -1,73 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &5334341810660213834 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5524516627708568918} - - component: {fileID: 8060172296368980519} - - component: {fileID: 3945124241373782966} - m_Layer: 10 - m_Name: TunnelNodeB - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5524516627708568918 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5334341810660213834} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5411003075815891614} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8060172296368980519 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5334341810660213834} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 275306f282948c343bf20ee884ad22b8, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::TunnelNode - aboveNode: {fileID: 0} - belowNode: {fileID: 0} ---- !u!65 &3945124241373782966 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5334341810660213834} - 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_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} --- !u!1 &5462246585413302240 GameObject: m_ObjectHideFlags: 0 @@ -167,7 +99,6 @@ Transform: m_Children: - {fileID: 4229549338725785498} - {fileID: 4703568612144557396} - - {fileID: 5524516627708568918} m_Father: {fileID: 7892781535212668078} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &7297238503126003997 diff --git a/Assets/Scenes/DefenceScene.unity b/Assets/Scenes/DefenceScene.unity index 198de37..7860b7d 100644 --- a/Assets/Scenes/DefenceScene.unity +++ b/Assets/Scenes/DefenceScene.unity @@ -940,6 +940,107 @@ NavMeshObstacle: m_CarveOnlyStationary: 1 m_Center: {x: 0, y: 0, z: 0} m_TimeToStationary: 0.5 +--- !u!1 &483574356 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + m_PrefabInstance: {fileID: 649621946} + m_PrefabAsset: {fileID: 0} +--- !u!143 &483574357 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483574356} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 2.4 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 1, z: 0} +--- !u!114 &483574358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483574356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 768ea4bbb68b30140921c7192ebe2852, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement + moveSpeed: 5 + rotationSpeed: 10 + jumpHeight: 1.5 + gravity: -19.62 +--- !u!114 &483574359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483574356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 736c03e837e6b074ba7f90b813050aed, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerInteractionController + range: 3 + interactableLayer: + serializedVersion: 2 + m_Bits: 0 + constructionLayer: + serializedVersion: 2 + m_Bits: 0 + buildSpeedMultiplier: 2 +--- !u!114 &483574361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483574356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d71ce06d133743140877345b807f33ad, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::TunnelTraveler + travelSpeed: 20 +--- !u!95 &483574362 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483574356} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + m_Controller: {fileID: 9100000, guid: aa53deee6146e7845a197a4031f40bb3, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1001 &497942047 PrefabInstance: m_ObjectHideFlags: 0 @@ -1276,195 +1377,86 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 599851509} m_CullTransparentMesh: 1 ---- !u!1 &621471626 -GameObject: +--- !u!1001 &649621946 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 621471627} - - component: {fileID: 621471630} - - component: {fileID: 621471629} - - component: {fileID: 621471628} - - component: {fileID: 621471635} - - component: {fileID: 621471634} - - component: {fileID: 621471636} - - component: {fileID: 621471637} - m_Layer: 9 - m_Name: Player - m_TagString: Player - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &621471627 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -8, y: 3, 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!65 &621471628 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - 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: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &621471629 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - 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: 673443bdcb7bf2f47be93ce60e68966f, 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 &621471630 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - m_Mesh: {fileID: 4300000, guid: fafc239678bc5064887cfc699c21e355, type: 3} ---- !u!114 &621471634 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 768ea4bbb68b30140921c7192ebe2852, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement - moveSpeed: 5 - jumpHeight: 1.5 - gravity: -19.62 ---- !u!143 &621471635 -CharacterController: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Height: 1 - m_Radius: 0.5 - m_SlopeLimit: 45 - m_StepOffset: 0.1 - m_SkinWidth: 0.08 - m_MinMoveDistance: 0.001 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &621471636 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 736c03e837e6b074ba7f90b813050aed, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::PlayerInteractionController - range: 5 - interactableLayer: - serializedVersion: 2 - m_Bits: 1024 - constructionLayer: - serializedVersion: 2 - m_Bits: 256 - buildSpeedMultiplier: 2 ---- !u!114 &621471637 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 621471626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d71ce06d133743140877345b807f33ad, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::TunnelTraveler - travelSpeed: 5 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_Name + value: Player + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_Layer + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + propertyPath: m_TagString + value: Player + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 483574359} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 483574358} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 483574357} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 483574361} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} + insertIndex: -1 + addedObject: {fileID: 483574362} + m_SourcePrefab: {fileID: 100100000, guid: ffaf1ddb2ff58d2448ccfdd357387f63, type: 3} --- !u!1 &670724421 GameObject: m_ObjectHideFlags: 0 @@ -2226,10 +2218,6 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 743367988} m_Modifications: - - target: {fileID: 2292926820231089492, guid: 48bf40d31e903d34f9469451d7de06dd, type: 3} - propertyPath: m_IsTrigger - value: 1 - objectReference: {fileID: 0} - target: {fileID: 7817822323996939414, guid: 48bf40d31e903d34f9469451d7de06dd, type: 3} propertyPath: m_Name value: Tunnel (1) @@ -2275,8 +2263,7 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_RemovedGameObjects: - - {fileID: 5334341810660213834, guid: 48bf40d31e903d34f9469451d7de06dd, type: 3} + m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 48bf40d31e903d34f9469451d7de06dd, type: 3} @@ -3372,7 +3359,7 @@ PrefabInstance: - target: {fileID: 3590434222513987346, guid: 2b08dd32e48ef5e4aa65a6122099152e, type: 3} propertyPath: Target.TrackingTarget value: - objectReference: {fileID: 621471627} + objectReference: {fileID: 0} - target: {fileID: 4415413950589506134, guid: 2b08dd32e48ef5e4aa65a6122099152e, type: 3} propertyPath: m_LocalPosition.x value: -4.46977 @@ -3413,6 +3400,6 @@ SceneRoots: - {fileID: 3690888448170635710} - {fileID: 743367988} - {fileID: 670724422} - - {fileID: 621471627} - {fileID: 1409253547} - {fileID: 14847856} + - {fileID: 649621946} diff --git a/Assets/Scripts/Player/PlayerAnimationController.cs b/Assets/Scripts/Player/PlayerAnimationController.cs new file mode 100644 index 0000000..ac70b17 --- /dev/null +++ b/Assets/Scripts/Player/PlayerAnimationController.cs @@ -0,0 +1,40 @@ +using UnityEngine; + +public class PlayerAnimationController : MonoBehaviour +{ + private Animator animator; + private CharacterController controller; + + void Start() + { + animator = GetComponent(); + controller = GetComponent(); + } + + void Update() + { + // 1. 이동 속도 제어 (수평 속도만 계산) + // Y축(중력/점프)을 제외한 X, Z축의 속도만 추출하여 MoveSpeed에 전달합니다. + Vector3 horizontalVelocity = new Vector3(controller.velocity.x, 0, controller.velocity.z); + float currentSpeed = horizontalVelocity.magnitude; + + // 애니메이터의 MoveSpeed 파라미터 업데이트 (0.1은 보정값) + animator.SetFloat("MoveSpeed", currentSpeed > 0.1f ? currentSpeed : 0f); + + // 2. 점프 및 공중 상태 (isGrounded 활용) + // CharacterController가 바닥에 닿아있는지 여부를 직접 전달합니다. + animator.SetBool("isGrounded", controller.isGrounded); + + // 3. 공격 (트리거) + if (Input.GetMouseButtonDown(0)) + { + animator.SetTrigger("Attack"); + } + + // 4. 인터랙션 (트리거) + if (Input.GetKeyDown(KeyCode.E)) + { + animator.SetTrigger("Interact"); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerAnimationController.cs.meta b/Assets/Scripts/Player/PlayerAnimationController.cs.meta new file mode 100644 index 0000000..58989f3 --- /dev/null +++ b/Assets/Scripts/Player/PlayerAnimationController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c6806aa8897e01a418df919c13b31c0b \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerBuildInteract.cs b/Assets/Scripts/Player/PlayerBuildInteract.cs deleted file mode 100644 index ec1df72..0000000 --- a/Assets/Scripts/Player/PlayerBuildInteract.cs +++ /dev/null @@ -1,58 +0,0 @@ -using UnityEngine; -using UnityEngine.InputSystem; - -public class PlayerBuildInteract : MonoBehaviour -{ - [Header("Interaction Settings")] - [SerializeField] private float interactRange = 3f; // 건설 가능 거리 - [SerializeField] private float buildSpeedMultiplier = 1f; // 건설 속도 배율 - [SerializeField] private LayerMask constructionLayer; // 토대 레이어 (선택 사항) - - private PlayerInputActions _inputActions; - private bool _isInteracting = false; - - void Awake() - { - _inputActions = new PlayerInputActions(); - - // Interact 액션 연결 (Hold 방식) - _inputActions.Player.Interact.started += ctx => _isInteracting = true; - _inputActions.Player.Interact.canceled += ctx => _isInteracting = false; - } - - void OnEnable() => _inputActions.Enable(); - void OnDisable() => _inputActions.Disable(); - - void Update() - { - // 키를 누르고 있을 때만 실행 - if (_isInteracting) - { - PerformConstruction(); - } - } - - void PerformConstruction() - { - // 주변의 모든 콜라이더 검사 - Collider[] targets = Physics.OverlapSphere(transform.position, interactRange, constructionLayer); - - foreach (var col in targets) - { - // 토대 컴포넌트가 있는지 확인 - ConstructionSite site = col.GetComponent(); - if (site != null) - { - // 드디어 여기서 호출합니다! - site.AdvanceConstruction(Time.deltaTime * buildSpeedMultiplier); - } - } - } - - // 에디터에서 상호작용 범위를 확인하기 위함 - void OnDrawGizmosSelected() - { - Gizmos.color = Color.yellow; - Gizmos.DrawWireSphere(transform.position, interactRange); - } -} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerBuildInteract.cs.meta b/Assets/Scripts/Player/PlayerBuildInteract.cs.meta deleted file mode 100644 index 5dbbaf3..0000000 --- a/Assets/Scripts/Player/PlayerBuildInteract.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 29785216765776848b0c3cc745d761a7 \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerInteraction.cs b/Assets/Scripts/Player/PlayerInteraction.cs deleted file mode 100644 index 44d55f9..0000000 --- a/Assets/Scripts/Player/PlayerInteraction.cs +++ /dev/null @@ -1,79 +0,0 @@ -using UnityEngine; -using UnityEngine.InputSystem; // New Input System 네임스페이스 - -public class PlayerInteraction : MonoBehaviour -{ - [Header("Detection Settings")] - [SerializeField] private float interactionRadius = 2.5f; - [SerializeField] private LayerMask interactableLayer; - - private PlayerInputActions _inputActions; - - void Awake() - { - _inputActions = new PlayerInputActions(); - } - - void OnEnable() - { - // Interact 액션이 수행되었을 때(버튼을 눌렀을 때) 실행될 함수 연결 - _inputActions.Player.Interact.performed += OnInteractPerformed; - _inputActions.Enable(); - } - - void OnDisable() - { - // 이벤트 연결 해제 및 비활성화 - _inputActions.Player.Interact.performed -= OnInteractPerformed; - _inputActions.Disable(); - } - - // Input Action 콜백 함수 - private void OnInteractPerformed(InputAction.CallbackContext context) - { - Debug.Log("E 키 눌림!"); // <-- 이게 콘솔에 찍히나요? - - // 건설 모드 중일 때는 상호작용을 막고 싶다면 아래 조건 추가 - if (BuildManager.Instance.IsBuildMode) return; - - CheckAndInteract(); - } - - private void CheckAndInteract() - { - Collider[] colliders = Physics.OverlapSphere(transform.position, interactionRadius, interactableLayer); - Debug.Log($"주변에서 {colliders.Length}개의 물체 감지됨"); // 0이 나오면 레이어나 콜라이더 문제 - - IInteractable nearestInteractable = null; - float minDistance = Mathf.Infinity; - - foreach (var col in colliders) - { - // 부모까지 포함하여 IInteractable 인터페이스를 찾음 - IInteractable interactable = col.GetComponentInParent(); - - if (interactable != null) - { - Debug.Log($"{col.name}에서 인터페이스 발견!"); - float distance = Vector3.Distance(transform.position, col.transform.position); - if (distance < minDistance) - { - minDistance = distance; - nearestInteractable = interactable; - } - } - } - - if (nearestInteractable != null) - { - nearestInteractable.Interact(gameObject); - Debug.Log($"[Interaction] {nearestInteractable.GetInteractionText()} 실행"); - } - } - - private void OnDrawGizmosSelected() - { - Gizmos.color = Color.yellow; - Gizmos.DrawWireSphere(transform.position, interactionRadius); - } -} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerInteraction.cs.meta b/Assets/Scripts/Player/PlayerInteraction.cs.meta deleted file mode 100644 index 3eca489..0000000 --- a/Assets/Scripts/Player/PlayerInteraction.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 059b81ebcbce23f4b88e7c52021fa869 \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerMovement.cs b/Assets/Scripts/Player/PlayerMovement.cs index 5dec36d..f4ad71e 100644 --- a/Assets/Scripts/Player/PlayerMovement.cs +++ b/Assets/Scripts/Player/PlayerMovement.cs @@ -5,23 +5,34 @@ public class PlayerMovement : MonoBehaviour { [Header("Movement Settings")] public float moveSpeed = 5f; - public float jumpHeight = 1.5f; // 점프 높이 - public float gravity = -19.62f; // 기본 중력보다 약간 무거운 값 추천 + public float rotationSpeed = 10f; + public float jumpHeight = 1.5f; + public float gravity = -19.62f; + + [Header("Interaction Settings")] + [SerializeField] private float interactRange = 3f; + [SerializeField] private LayerMask interactableLayer; // 터널 노드 레이어 private CharacterController _controller; private PlayerInputActions _inputActions; + private Animator _animator; + private TunnelTraveler _traveler; // 터널 이동 컴포넌트 참조 private Vector2 _moveInput; - private Vector3 _velocity; // 수직 속도 (중력용) + private Vector3 _velocity; + private Vector3 _currentMoveDir; private bool _isGrounded; void Awake() { _controller = GetComponent(); + _animator = GetComponent(); + _traveler = GetComponent(); // 컴포넌트 캐싱 _inputActions = new PlayerInputActions(); - // 점프 액션 연결 _inputActions.Player.Jump.performed += ctx => OnJump(); + _inputActions.Player.Attack.performed += ctx => OnAttack(); + _inputActions.Player.Interact.performed += ctx => OnInteract(); } void OnEnable() => _inputActions.Enable(); @@ -29,46 +40,103 @@ public class PlayerMovement : MonoBehaviour void Update() { - // [해결책] 터널 이동 중이라면 일반 이동/중력 로직을 모두 중단합니다. - if (GetComponent().IsTraveling) - { - return; - } + // [중요] 터널 이동 중에는 모든 이동/중력 로직을 중단합니다. + if (_traveler != null && _traveler.IsTraveling) return; - // 1. 바닥 체크 (CharacterController의 기능 활용) _isGrounded = _controller.isGrounded; + _animator.SetBool("isGrounded", _isGrounded); + + bool isAttacking = _animator.GetCurrentAnimatorStateInfo(0).IsTag("Attack"); + if (_isGrounded && _velocity.y < 0) { - // 바닥에 닿아있을 때는 아주 작은 하방 힘만 유지 (안정성) _velocity.y = -2f; } - // 2. 이동 로직 - _moveInput = _inputActions.Player.Move.ReadValue(); - Vector3 move = transform.right * _moveInput.x + transform.forward * _moveInput.y; - _controller.Move(move * moveSpeed * Time.deltaTime); + Vector3 move = Vector3.zero; + + if (_isGrounded) + { + if (isAttacking) + { + move = Vector3.zero; + _currentMoveDir = Vector3.zero; + } + else + { + _moveInput = _inputActions.Player.Move.ReadValue(); + move = new Vector3(_moveInput.x, 0, _moveInput.y).normalized; + _currentMoveDir = move; + } + } + else + { + if (isAttacking) + { + move = _currentMoveDir; + } + else + { + _moveInput = _inputActions.Player.Move.ReadValue(); + move = new Vector3(_moveInput.x, 0, _moveInput.y).normalized; + if (move.magnitude > 0.1f) _currentMoveDir = move; + } + } + + if (move.magnitude >= 0.1f) + { + Quaternion targetRotation = Quaternion.LookRotation(move); + if (!isAttacking) + transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime); + + _controller.Move(move * moveSpeed * Time.deltaTime); + } + + _animator.SetFloat("MoveSpeed", isAttacking && _isGrounded ? 0 : move.magnitude); - // 3. 중력 적용 _velocity.y += gravity * Time.deltaTime; - - // 4. 최종 수직 이동 적용 (중력/점프 속도) _controller.Move(_velocity * Time.deltaTime); } private void OnJump() { - // TunnelTraveler가 이동 중인지 체크 (상태 변수 활용) - if (GetComponent().IsTraveling) return; + if (_traveler != null && _traveler.IsTraveling) return; + if (_isGrounded) _velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity); + } - if (_isGrounded) + private void OnAttack() + { + if (_traveler != null && _traveler.IsTraveling) return; + _animator.SetTrigger("Attack"); + } + + private void OnInteract() + { + // 터널 이동 중에는 상호작용 금지 + if (_traveler != null && _traveler.IsTraveling) return; + + // 상호작용 애니메이션 실행 + _animator.SetTrigger("Interact"); + + // [핵심 추가] 주변 상호작용 대상(터널 노드 등) 검색 + Collider[] colliders = Physics.OverlapSphere(transform.position, interactRange, interactableLayer); + + foreach (var col in colliders) { - _velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity); + // 터널 노드(IInteractable)를 찾아 Interact 호출 + IInteractable interactable = col.GetComponentInParent(); + if (interactable != null) + { + interactable.Interact(gameObject); + break; // 하나만 발견하면 중단 + } } } - // 터널 이동 등 외부에서 중력을 초기화해야 할 때 사용 - public void ResetVelocity() + // 범위 확인용 기즈모 + void OnDrawGizmosSelected() { - _velocity.y = 0; + Gizmos.color = Color.yellow; + Gizmos.DrawWireSphere(transform.position, interactRange); } } \ No newline at end of file