From 4946e167102c5cd25f25810484472d6fd1b0ac7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=8F=84=ED=99=98?= Date: Thu, 16 Apr 2026 21:14:05 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=9C=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 발사라던가 제작했습니다만 .. 데미지 구현은 모르겠고 큐 효율성을 높여주세요 --- Assets/InputSystem_Actions.inputactions | 21 + Assets/InputSystem_Actions.inputactions.meta | 6 +- Assets/Prefabs.meta | 8 + Assets/Prefabs/Bullet.prefab | 154 ++ Assets/Prefabs/Bullet.prefab.meta | 7 + Assets/Scenes/SampleScene.unity | 219 +- Assets/Scripts/BulletMovement.cs | 15 +- Assets/Scripts/InputManager.cs | 31 + Assets/Scripts/InputManager.cs.meta | 2 + Assets/Scripts/InputSystem.cs | 1877 ++++++++++++++++++ Assets/Scripts/InputSystem.cs.meta | 2 + Assets/Scripts/LivingEntity.cs | 23 + Assets/Scripts/LivingEntity.cs.meta | 2 + Assets/Scripts/Player.cs | 103 + Assets/Scripts/Player.cs.meta | 2 + 15 files changed, 2399 insertions(+), 73 deletions(-) create mode 100644 Assets/Prefabs.meta create mode 100644 Assets/Prefabs/Bullet.prefab create mode 100644 Assets/Prefabs/Bullet.prefab.meta create mode 100644 Assets/Scripts/InputManager.cs create mode 100644 Assets/Scripts/InputManager.cs.meta create mode 100644 Assets/Scripts/InputSystem.cs create mode 100644 Assets/Scripts/InputSystem.cs.meta create mode 100644 Assets/Scripts/LivingEntity.cs create mode 100644 Assets/Scripts/LivingEntity.cs.meta create mode 100644 Assets/Scripts/Player.cs create mode 100644 Assets/Scripts/Player.cs.meta diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 1a12cb9..8fe2672 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -1,4 +1,5 @@ { + "version": 1, "name": "InputSystem_Actions", "maps": [ { @@ -85,6 +86,15 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "Mouse", + "type": "Value", + "id": "24341b02-824d-4fad-9ca4-b13eb0e8d4e7", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true } ], "bindings": [ @@ -472,6 +482,17 @@ "action": "Crouch", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "37f6f208-f780-4e98-829e-c0037bea0fe7", + "path": "/position", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Mouse", + "isComposite": false, + "isPartOfComposite": false } ] }, diff --git a/Assets/InputSystem_Actions.inputactions.meta b/Assets/InputSystem_Actions.inputactions.meta index e786d3e..e6ff04f 100644 --- a/Assets/InputSystem_Actions.inputactions.meta +++ b/Assets/InputSystem_Actions.inputactions.meta @@ -8,7 +8,7 @@ ScriptedImporter: assetBundleName: assetBundleVariant: script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: + generateWrapperCode: 1 + wrapperCodePath: Assets/Scripts/InputSystem.cs + wrapperClassName: InputSystem wrapperCodeNamespace: diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 0000000..b100600 --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 789f0212fbad5b34190229bfd3fd1316 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Bullet.prefab b/Assets/Prefabs/Bullet.prefab new file mode 100644 index 0000000..ab11413 --- /dev/null +++ b/Assets/Prefabs/Bullet.prefab @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3217186003837015034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 20945486064176397} + - component: {fileID: 128695639235310656} + - component: {fileID: 6310722883206932060} + - component: {fileID: 1818131859172166424} + m_Layer: 7 + m_Name: Bullet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &20945486064176397 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3217186003837015034} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.12751925, w: 0.9918362} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.05, y: 0.1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -14.653} +--- !u!212 &128695639235310656 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3217186003837015034} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!114 &6310722883206932060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3217186003837015034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80aae26211daf7b4d9f8f603e7c6987f, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::BulletMovement + moveSpeed: 10 +--- !u!61 &1818131859172166424 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3217186003837015034} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 1, y: 1} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 diff --git a/Assets/Prefabs/Bullet.prefab.meta b/Assets/Prefabs/Bullet.prefab.meta new file mode 100644 index 0000000..c86ec45 --- /dev/null +++ b/Assets/Prefabs/Bullet.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 204cdd5e6f663694d8d6e719543b2018 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 8f1bee5..f04a7e7 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -119,6 +119,97 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &8217829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8217830} + - component: {fileID: 8217831} + m_Layer: 0 + m_Name: AnglePoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8217830 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8217829} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1146100370} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8217831 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8217829} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -340,7 +431,7 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &997674418 +--- !u!1 &1146100368 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -348,25 +439,24 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 997674420} - - component: {fileID: 997674419} - - component: {fileID: 997674421} - - component: {fileID: 997674422} - m_Layer: 7 - m_Name: Bullet + - component: {fileID: 1146100370} + - component: {fileID: 1146100369} + - component: {fileID: 1146100371} + m_Layer: 0 + m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!212 &997674419 +--- !u!212 &1146100369 SpriteRenderer: serializedVersion: 2 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 997674418} + m_GameObject: {fileID: 1146100368} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -408,7 +498,7 @@ SpriteRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_MaskInteraction: 0 - m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 @@ -418,84 +508,85 @@ SpriteRenderer: m_SpriteTileMode: 0 m_WasSpriteAssigned: 1 m_SpriteSortPoint: 0 ---- !u!4 &997674420 +--- !u!4 &1146100370 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 997674418} + m_GameObject: {fileID: 1146100368} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0.12751925, w: 0.9918362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.05, y: 0.1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] + m_LocalScale: {x: 0.7, y: 0.7, z: 0.7} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 8217830} m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: -14.653} ---- !u!114 &997674421 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1146100371 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 997674418} + m_GameObject: {fileID: 1146100368} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 80aae26211daf7b4d9f8f603e7c6987f, type: 3} + m_Script: {fileID: 11500000, guid: 888d5e9b7a6b20447979a287da28b419, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::BulletMovement - moveSpeed: 0.05 ---- !u!61 &997674422 -BoxCollider2D: + m_EditorClassIdentifier: Assembly-CSharp::Player + bulletPrefab: {fileID: 3217186003837015034, guid: 204cdd5e6f663694d8d6e719543b2018, type: 3} + bulletCount: 30 +--- !u!1 &1777497058 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 997674418} + serializedVersion: 6 + m_Component: + - component: {fileID: 1777497060} + - component: {fileID: 1777497059} + m_Layer: 0 + m_Name: InputManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1777497059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777497058} m_Enabled: 1 - serializedVersion: 3 - m_Density: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_ForceSendLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ForceReceiveLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_ContactCaptureLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_CallbackLayers: - serializedVersion: 2 - m_Bits: 4294967295 - m_IsTrigger: 1 - m_UsedByEffector: 0 - m_CompositeOperation: 0 - m_CompositeOrder: 0 - m_Offset: {x: 0, y: 0} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 1, y: 1} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - m_Size: {x: 1, y: 1} - m_EdgeRadius: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 860109aa4ce233645bc8d7fd7091b26b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::InputManager +--- !u!4 &1777497060 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777497058} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5963972, y: -0.34278157, 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!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 519420032} - {fileID: 619394802} - - {fileID: 997674420} + - {fileID: 1146100370} + - {fileID: 1777497060} diff --git a/Assets/Scripts/BulletMovement.cs b/Assets/Scripts/BulletMovement.cs index a2e8ad5..4d604cc 100644 --- a/Assets/Scripts/BulletMovement.cs +++ b/Assets/Scripts/BulletMovement.cs @@ -4,20 +4,23 @@ using UnityEngine; public class BulletMovement : MonoBehaviour { public float moveSpeed = 10; + public float lifeTime = 2; + private float _currentTime = 0; - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() + private void OnEnable() { - + _currentTime = lifeTime; } // Update is called once per frame void Update() { transform.Translate(Vector2.up * (Time.deltaTime * moveSpeed)); + _currentTime -= Time.deltaTime; + if (_currentTime <= 0) + { + gameObject.SetActive(false); + } } - private void OnTriggerEnter2D(Collider2D other) - { - } } diff --git a/Assets/Scripts/InputManager.cs b/Assets/Scripts/InputManager.cs new file mode 100644 index 0000000..937499e --- /dev/null +++ b/Assets/Scripts/InputManager.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +public class InputManager : MonoBehaviour +{ + // 1. 진짜 데이터가 담길 숨겨진 변수 + private static InputSystem _inputSystem; + + // 2. 외부에서 접근할 프로퍼티 + public static InputSystem InputSystem + { + get + { + // 누군가 InputSystem을 찾았는데 없을 때만 새로 생성 + _inputSystem ??= new InputSystem(); + return _inputSystem; + } + } + + // Start에서는 더 이상 new를 할 필요가 없습니다! + // (위의 get에서 자동으로 해주니까요) + private void OnEnable() + { + // 이때 객체가 없으면 자동으로 생성(get 호출)된 후 Enable()이 실행됩니다. + InputSystem.Enable(); + } + + private void OnDisable() + { + InputSystem.Disable(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/InputManager.cs.meta b/Assets/Scripts/InputManager.cs.meta new file mode 100644 index 0000000..6177bf5 --- /dev/null +++ b/Assets/Scripts/InputManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 860109aa4ce233645bc8d7fd7091b26b \ No newline at end of file diff --git a/Assets/Scripts/InputSystem.cs b/Assets/Scripts/InputSystem.cs new file mode 100644 index 0000000..c3eba8e --- /dev/null +++ b/Assets/Scripts/InputSystem.cs @@ -0,0 +1,1877 @@ +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.19.0 +// from Assets/InputSystem_Actions.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Utilities; + +/// +/// Provides programmatic access to , , and instances defined in asset "Assets/InputSystem_Actions.inputactions". +/// +/// +/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. +/// +/// +/// +/// using namespace UnityEngine; +/// using UnityEngine.InputSystem; +/// +/// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface. +/// public class Example : MonoBehaviour, MyActions.IPlayerActions +/// { +/// private MyActions_Actions m_Actions; // Source code representation of asset. +/// private MyActions_Actions.PlayerActions m_Player; // Source code representation of action map. +/// +/// void Awake() +/// { +/// m_Actions = new MyActions_Actions(); // Create asset object. +/// m_Player = m_Actions.Player; // Extract action map object. +/// m_Player.AddCallbacks(this); // Register callback interface IPlayerActions. +/// } +/// +/// void OnDestroy() +/// { +/// m_Actions.Dispose(); // Destroy asset object. +/// } +/// +/// void OnEnable() +/// { +/// m_Player.Enable(); // Enable all actions within map. +/// } +/// +/// void OnDisable() +/// { +/// m_Player.Disable(); // Disable all actions within map. +/// } +/// +/// #region Interface implementation of MyActions.IPlayerActions +/// +/// // Invoked when "Move" action is either started, performed or canceled. +/// public void OnMove(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnMove: {context.ReadValue<Vector2>()}"); +/// } +/// +/// // Invoked when "Attack" action is either started, performed or canceled. +/// public void OnAttack(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnAttack: {context.ReadValue<float>()}"); +/// } +/// +/// #endregion +/// } +/// +/// +public partial class @InputSystem: IInputActionCollection2, IDisposable +{ + /// + /// Provides access to the underlying asset instance. + /// + public InputActionAsset asset { get; } + + /// + /// Constructs a new instance. + /// + public @InputSystem() + { + asset = InputActionAsset.FromJson(@"{ + ""version"": 1, + ""name"": ""InputSystem_Actions"", + ""maps"": [ + { + ""name"": ""Player"", + ""id"": ""df70fa95-8a34-4494-b137-73ab6b9c7d37"", + ""actions"": [ + { + ""name"": ""Move"", + ""type"": ""Value"", + ""id"": ""351f2ccd-1f9f-44bf-9bec-d62ac5c5f408"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Look"", + ""type"": ""Value"", + ""id"": ""6b444451-8a00-4d00-a97e-f47457f736a8"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Attack"", + ""type"": ""Button"", + ""id"": ""6c2ab1b8-8984-453a-af3d-a3c78ae1679a"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Interact"", + ""type"": ""Button"", + ""id"": ""852140f2-7766-474d-8707-702459ba45f3"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": ""Hold"", + ""initialStateCheck"": false + }, + { + ""name"": ""Crouch"", + ""type"": ""Button"", + ""id"": ""27c5f898-bc57-4ee1-8800-db469aca5fe3"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Jump"", + ""type"": ""Button"", + ""id"": ""f1ba0d36-48eb-4cd5-b651-1c94a6531f70"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Previous"", + ""type"": ""Button"", + ""id"": ""2776c80d-3c14-4091-8c56-d04ced07a2b0"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Next"", + ""type"": ""Button"", + ""id"": ""b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Sprint"", + ""type"": ""Button"", + ""id"": ""641cd816-40e6-41b4-8c3d-04687c349290"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Mouse"", + ""type"": ""Value"", + ""id"": ""24341b02-824d-4fad-9ca4-b13eb0e8d4e7"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + } + ], + ""bindings"": [ + { + ""name"": """", + ""id"": ""978bfe49-cc26-4a3d-ab7b-7d7a29327403"", + ""path"": ""/leftStick"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": ""WASD"", + ""id"": ""00ca640b-d935-4593-8157-c05846ea39b3"", + ""path"": ""Dpad"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Move"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""e2062cb9-1b15-46a2-838c-2f8d72a0bdd9"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""8180e8bd-4097-4f4e-ab88-4523101a6ce9"", + ""path"": ""/upArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""320bffee-a40b-4347-ac70-c210eb8bc73a"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""1c5327b5-f71c-4f60-99c7-4e737386f1d1"", + ""path"": ""/downArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""d2581a9b-1d11-4566-b27d-b92aff5fabbc"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""2e46982e-44cc-431b-9f0b-c11910bf467a"", + ""path"": ""/leftArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""fcfe95b8-67b9-4526-84b5-5d0bc98d6400"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""77bff152-3580-4b21-b6de-dcd0c7e41164"", + ""path"": ""/rightArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8"", + ""path"": ""/{Primary2DAxis}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""3ea4d645-4504-4529-b061-ab81934c3752"", + ""path"": ""/stick"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""c1f7a91b-d0fd-4a62-997e-7fb9b69bf235"", + ""path"": ""/rightStick"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8c8e490b-c610-4785-884f-f04217b23ca4"", + ""path"": ""/delta"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse;Touch"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""3e5f5442-8668-4b27-a940-df99bad7e831"", + ""path"": ""/{Hatswitch}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""143bb1cd-cc10-4eca-a2f0-a3664166fe91"", + ""path"": ""/buttonWest"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""05f6913d-c316-48b2-a6bb-e225f14c7960"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""886e731e-7071-4ae4-95c0-e61739dad6fd"", + ""path"": ""/primaryTouch/tap"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Touch"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""ee3d0cd2-254e-47a7-a8cb-bc94d9658c54"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8255d333-5683-4943-a58a-ccb207ff1dce"", + ""path"": ""/{PrimaryAction}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7"", + ""path"": ""/enter"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""cbac6039-9c09-46a1-b5f2-4e5124ccb5ed"", + ""path"": ""/2"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""e15ca19d-e649-4852-97d5-7fe8ccc44e94"", + ""path"": ""/dpad/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""f2e9ba44-c423-42a7-ad56-f20975884794"", + ""path"": ""/leftShift"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6"", + ""path"": ""/leftStickPress"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""d8bf24bf-3f2f-4160-a97c-38ec1eb520ba"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""eb40bb66-4559-4dfa-9a2f-820438abb426"", + ""path"": ""/space"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""daba33a1-ad0c-4742-a909-43ad1cdfbeb6"", + ""path"": ""/buttonSouth"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""603f3daf-40bd-4854-8724-93e8017f59e3"", + ""path"": ""/secondaryButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""1534dc16-a6aa-499d-9c3a-22b47347b52a"", + ""path"": ""/1"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Previous"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""25060bbd-a3a6-476e-8fba-45ae484aad05"", + ""path"": ""/dpad/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Previous"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""1c04ea5f-b012-41d1-a6f7-02e963b52893"", + ""path"": ""/e"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""b3f66d0b-7751-423f-908b-a11c5bd95930"", + ""path"": ""/buttonNorth"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4f4649ac-64a8-4a73-af11-b3faef356a4d"", + ""path"": ""/buttonEast"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Crouch"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""36e52cba-0905-478e-a818-f4bfcb9f3b9a"", + ""path"": ""/c"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Crouch"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""37f6f208-f780-4e98-829e-c0037bea0fe7"", + ""path"": ""/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Mouse"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + }, + { + ""name"": ""UI"", + ""id"": ""272f6d14-89ba-496f-b7ff-215263d3219f"", + ""actions"": [ + { + ""name"": ""Navigate"", + ""type"": ""PassThrough"", + ""id"": ""c95b2375-e6d9-4b88-9c4c-c5e76515df4b"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Submit"", + ""type"": ""Button"", + ""id"": ""7607c7b6-cd76-4816-beef-bd0341cfe950"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Cancel"", + ""type"": ""Button"", + ""id"": ""15cef263-9014-4fd5-94d9-4e4a6234a6ef"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Point"", + ""type"": ""PassThrough"", + ""id"": ""32b35790-4ed0-4e9a-aa41-69ac6d629449"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Click"", + ""type"": ""PassThrough"", + ""id"": ""3c7022bf-7922-4f7c-a998-c437916075ad"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""RightClick"", + ""type"": ""PassThrough"", + ""id"": ""44b200b1-1557-4083-816c-b22cbdf77ddf"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""MiddleClick"", + ""type"": ""PassThrough"", + ""id"": ""dad70c86-b58c-4b17-88ad-f5e53adf419e"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""ScrollWheel"", + ""type"": ""PassThrough"", + ""id"": ""0489e84a-4833-4c40-bfae-cea84b696689"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""TrackedDevicePosition"", + ""type"": ""PassThrough"", + ""id"": ""24908448-c609-4bc3-a128-ea258674378a"", + ""expectedControlType"": ""Vector3"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""TrackedDeviceOrientation"", + ""type"": ""PassThrough"", + ""id"": ""9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be"", + ""expectedControlType"": ""Quaternion"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + } + ], + ""bindings"": [ + { + ""name"": ""Gamepad"", + ""id"": ""809f371f-c5e2-4e7a-83a1-d867598f40dd"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf"", + ""path"": ""/leftStick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""9144cbe6-05e1-4687-a6d7-24f99d23dd81"", + ""path"": ""/rightStick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""2db08d65-c5fb-421b-983f-c71163608d67"", + ""path"": ""/leftStick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""58748904-2ea9-4a80-8579-b500e6a76df8"", + ""path"": ""/rightStick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""8ba04515-75aa-45de-966d-393d9bbd1c14"", + ""path"": ""/leftStick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""712e721c-bdfb-4b23-a86c-a0d9fcfea921"", + ""path"": ""/rightStick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""fcd248ae-a788-4676-a12e-f4d81205600b"", + ""path"": ""/leftStick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""1f04d9bc-c50b-41a1-bfcc-afb75475ec20"", + ""path"": ""/rightStick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""fb8277d4-c5cd-4663-9dc7-ee3f0b506d90"", + ""path"": ""/dpad"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": ""Joystick"", + ""id"": ""e25d9774-381c-4a61-b47c-7b6b299ad9f9"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""3db53b26-6601-41be-9887-63ac74e79d19"", + ""path"": ""/stick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""0cb3e13e-3d90-4178-8ae6-d9c5501d653f"", + ""path"": ""/stick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""0392d399-f6dd-4c82-8062-c1e9c0d34835"", + ""path"": ""/stick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""942a66d9-d42f-43d6-8d70-ecb4ba5363bc"", + ""path"": ""/stick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""Keyboard"", + ""id"": ""ff527021-f211-4c02-933e-5976594c46ed"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""563fbfdd-0f09-408d-aa75-8642c4f08ef0"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""eb480147-c587-4a33-85ed-eb0ab9942c43"", + ""path"": ""/upArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""2bf42165-60bc-42ca-8072-8c13ab40239b"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""85d264ad-e0a0-4565-b7ff-1a37edde51ac"", + ""path"": ""/downArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""74214943-c580-44e4-98eb-ad7eebe17902"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""cea9b045-a000-445b-95b8-0c171af70a3b"", + ""path"": ""/leftArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""8607c725-d935-4808-84b1-8354e29bab63"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""4cda81dc-9edd-4e03-9d7c-a71a14345d0b"", + ""path"": ""/rightArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc"", + ""path"": ""*/{Submit}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse;Gamepad;Touch;Joystick;XR"", + ""action"": ""Submit"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""82627dcc-3b13-4ba9-841d-e4b746d6553e"", + ""path"": ""*/{Cancel}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse;Gamepad;Touch;Joystick;XR"", + ""action"": ""Cancel"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""c52c8e0b-8179-41d3-b8a1-d149033bbe86"", + ""path"": ""/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""e1394cbc-336e-44ce-9ea8-6007ed6193f7"", + ""path"": ""/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""5693e57a-238a-46ed-b5ae-e64e6e574302"", + ""path"": ""/touch*/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Touch"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4faf7dc9-b979-4210-aa8c-e808e1ef89f5"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8d66d5ba-88d7-48e6-b1cd-198bbfef7ace"", + ""path"": ""/tip"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""47c2a644-3ebc-4dae-a106-589b7ca75b59"", + ""path"": ""/touch*/press"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Touch"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""bb9e6b34-44bf-4381-ac63-5aa15d19f677"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""38c99815-14ea-4617-8627-164d27641299"", + ""path"": ""/scroll"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""ScrollWheel"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4c191405-5738-4d4b-a523-c6a301dbf754"", + ""path"": ""/rightButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""RightClick"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""24066f69-da47-44f3-a07e-0015fb02eb2e"", + ""path"": ""/middleButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""MiddleClick"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77"", + ""path"": ""/devicePosition"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""TrackedDevicePosition"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""23e01e3a-f935-4948-8d8b-9bcac77714fb"", + ""path"": ""/deviceRotation"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""TrackedDeviceOrientation"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + } + ], + ""controlSchemes"": [ + { + ""name"": ""Keyboard&Mouse"", + ""bindingGroup"": ""Keyboard&Mouse"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + }, + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Gamepad"", + ""bindingGroup"": ""Gamepad"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Touch"", + ""bindingGroup"": ""Touch"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Joystick"", + ""bindingGroup"": ""Joystick"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""XR"", + ""bindingGroup"": ""XR"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + } + ] +}"); + // Player + m_Player = asset.FindActionMap("Player", throwIfNotFound: true); + m_Player_Move = m_Player.FindAction("Move", throwIfNotFound: true); + m_Player_Look = m_Player.FindAction("Look", throwIfNotFound: true); + m_Player_Attack = m_Player.FindAction("Attack", throwIfNotFound: true); + m_Player_Interact = m_Player.FindAction("Interact", throwIfNotFound: true); + m_Player_Crouch = m_Player.FindAction("Crouch", throwIfNotFound: true); + m_Player_Jump = m_Player.FindAction("Jump", throwIfNotFound: true); + m_Player_Previous = m_Player.FindAction("Previous", throwIfNotFound: true); + m_Player_Next = m_Player.FindAction("Next", throwIfNotFound: true); + m_Player_Sprint = m_Player.FindAction("Sprint", throwIfNotFound: true); + m_Player_Mouse = m_Player.FindAction("Mouse", throwIfNotFound: true); + // UI + m_UI = asset.FindActionMap("UI", throwIfNotFound: true); + m_UI_Navigate = m_UI.FindAction("Navigate", throwIfNotFound: true); + m_UI_Submit = m_UI.FindAction("Submit", throwIfNotFound: true); + m_UI_Cancel = m_UI.FindAction("Cancel", throwIfNotFound: true); + m_UI_Point = m_UI.FindAction("Point", throwIfNotFound: true); + m_UI_Click = m_UI.FindAction("Click", throwIfNotFound: true); + m_UI_RightClick = m_UI.FindAction("RightClick", throwIfNotFound: true); + m_UI_MiddleClick = m_UI.FindAction("MiddleClick", throwIfNotFound: true); + m_UI_ScrollWheel = m_UI.FindAction("ScrollWheel", throwIfNotFound: true); + m_UI_TrackedDevicePosition = m_UI.FindAction("TrackedDevicePosition", throwIfNotFound: true); + m_UI_TrackedDeviceOrientation = m_UI.FindAction("TrackedDeviceOrientation", throwIfNotFound: true); + } + + ~@InputSystem() + { + UnityEngine.Debug.Assert(!m_Player.enabled, "This will cause a leak and performance issues, InputSystem.Player.Disable() has not been called."); + UnityEngine.Debug.Assert(!m_UI.enabled, "This will cause a leak and performance issues, InputSystem.UI.Disable() has not been called."); + } + + /// + /// Destroys this asset and all associated instances. + /// + public void Dispose() + { + UnityEngine.Object.Destroy(asset); + } + + /// + public InputBinding? bindingMask + { + get => asset.bindingMask; + set => asset.bindingMask = value; + } + + /// + public ReadOnlyArray? devices + { + get => asset.devices; + set => asset.devices = value; + } + + /// + public ReadOnlyArray controlSchemes => asset.controlSchemes; + + /// + public bool Contains(InputAction action) + { + return asset.Contains(action); + } + + /// + public IEnumerator GetEnumerator() + { + return asset.GetEnumerator(); + } + + /// + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + public void Enable() + { + asset.Enable(); + } + + /// + public void Disable() + { + asset.Disable(); + } + + /// + public IEnumerable bindings => asset.bindings; + + /// + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + /// + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + + // Player + private readonly InputActionMap m_Player; + private List m_PlayerActionsCallbackInterfaces = new List(); + private readonly InputAction m_Player_Move; + private readonly InputAction m_Player_Look; + private readonly InputAction m_Player_Attack; + private readonly InputAction m_Player_Interact; + private readonly InputAction m_Player_Crouch; + private readonly InputAction m_Player_Jump; + private readonly InputAction m_Player_Previous; + private readonly InputAction m_Player_Next; + private readonly InputAction m_Player_Sprint; + private readonly InputAction m_Player_Mouse; + /// + /// Provides access to input actions defined in input action map "Player". + /// + public struct PlayerActions + { + private @InputSystem m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public PlayerActions(@InputSystem wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "Player/Move". + /// + public InputAction @Move => m_Wrapper.m_Player_Move; + /// + /// Provides access to the underlying input action "Player/Look". + /// + public InputAction @Look => m_Wrapper.m_Player_Look; + /// + /// Provides access to the underlying input action "Player/Attack". + /// + public InputAction @Attack => m_Wrapper.m_Player_Attack; + /// + /// Provides access to the underlying input action "Player/Interact". + /// + public InputAction @Interact => m_Wrapper.m_Player_Interact; + /// + /// Provides access to the underlying input action "Player/Crouch". + /// + public InputAction @Crouch => m_Wrapper.m_Player_Crouch; + /// + /// Provides access to the underlying input action "Player/Jump". + /// + public InputAction @Jump => m_Wrapper.m_Player_Jump; + /// + /// Provides access to the underlying input action "Player/Previous". + /// + public InputAction @Previous => m_Wrapper.m_Player_Previous; + /// + /// Provides access to the underlying input action "Player/Next". + /// + public InputAction @Next => m_Wrapper.m_Player_Next; + /// + /// Provides access to the underlying input action "Player/Sprint". + /// + public InputAction @Sprint => m_Wrapper.m_Player_Sprint; + /// + /// Provides access to the underlying input action "Player/Mouse". + /// + public InputAction @Mouse => m_Wrapper.m_Player_Mouse; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_Player; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(PlayerActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IPlayerActions instance) + { + if (instance == null || m_Wrapper.m_PlayerActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_PlayerActionsCallbackInterfaces.Add(instance); + @Move.started += instance.OnMove; + @Move.performed += instance.OnMove; + @Move.canceled += instance.OnMove; + @Look.started += instance.OnLook; + @Look.performed += instance.OnLook; + @Look.canceled += instance.OnLook; + @Attack.started += instance.OnAttack; + @Attack.performed += instance.OnAttack; + @Attack.canceled += instance.OnAttack; + @Interact.started += instance.OnInteract; + @Interact.performed += instance.OnInteract; + @Interact.canceled += instance.OnInteract; + @Crouch.started += instance.OnCrouch; + @Crouch.performed += instance.OnCrouch; + @Crouch.canceled += instance.OnCrouch; + @Jump.started += instance.OnJump; + @Jump.performed += instance.OnJump; + @Jump.canceled += instance.OnJump; + @Previous.started += instance.OnPrevious; + @Previous.performed += instance.OnPrevious; + @Previous.canceled += instance.OnPrevious; + @Next.started += instance.OnNext; + @Next.performed += instance.OnNext; + @Next.canceled += instance.OnNext; + @Sprint.started += instance.OnSprint; + @Sprint.performed += instance.OnSprint; + @Sprint.canceled += instance.OnSprint; + @Mouse.started += instance.OnMouse; + @Mouse.performed += instance.OnMouse; + @Mouse.canceled += instance.OnMouse; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IPlayerActions instance) + { + @Move.started -= instance.OnMove; + @Move.performed -= instance.OnMove; + @Move.canceled -= instance.OnMove; + @Look.started -= instance.OnLook; + @Look.performed -= instance.OnLook; + @Look.canceled -= instance.OnLook; + @Attack.started -= instance.OnAttack; + @Attack.performed -= instance.OnAttack; + @Attack.canceled -= instance.OnAttack; + @Interact.started -= instance.OnInteract; + @Interact.performed -= instance.OnInteract; + @Interact.canceled -= instance.OnInteract; + @Crouch.started -= instance.OnCrouch; + @Crouch.performed -= instance.OnCrouch; + @Crouch.canceled -= instance.OnCrouch; + @Jump.started -= instance.OnJump; + @Jump.performed -= instance.OnJump; + @Jump.canceled -= instance.OnJump; + @Previous.started -= instance.OnPrevious; + @Previous.performed -= instance.OnPrevious; + @Previous.canceled -= instance.OnPrevious; + @Next.started -= instance.OnNext; + @Next.performed -= instance.OnNext; + @Next.canceled -= instance.OnNext; + @Sprint.started -= instance.OnSprint; + @Sprint.performed -= instance.OnSprint; + @Sprint.canceled -= instance.OnSprint; + @Mouse.started -= instance.OnMouse; + @Mouse.performed -= instance.OnMouse; + @Mouse.canceled -= instance.OnMouse; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IPlayerActions instance) + { + if (m_Wrapper.m_PlayerActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IPlayerActions instance) + { + foreach (var item in m_Wrapper.m_PlayerActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_PlayerActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public PlayerActions @Player => new PlayerActions(this); + + // UI + private readonly InputActionMap m_UI; + private List m_UIActionsCallbackInterfaces = new List(); + private readonly InputAction m_UI_Navigate; + private readonly InputAction m_UI_Submit; + private readonly InputAction m_UI_Cancel; + private readonly InputAction m_UI_Point; + private readonly InputAction m_UI_Click; + private readonly InputAction m_UI_RightClick; + private readonly InputAction m_UI_MiddleClick; + private readonly InputAction m_UI_ScrollWheel; + private readonly InputAction m_UI_TrackedDevicePosition; + private readonly InputAction m_UI_TrackedDeviceOrientation; + /// + /// Provides access to input actions defined in input action map "UI". + /// + public struct UIActions + { + private @InputSystem m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public UIActions(@InputSystem wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "UI/Navigate". + /// + public InputAction @Navigate => m_Wrapper.m_UI_Navigate; + /// + /// Provides access to the underlying input action "UI/Submit". + /// + public InputAction @Submit => m_Wrapper.m_UI_Submit; + /// + /// Provides access to the underlying input action "UI/Cancel". + /// + public InputAction @Cancel => m_Wrapper.m_UI_Cancel; + /// + /// Provides access to the underlying input action "UI/Point". + /// + public InputAction @Point => m_Wrapper.m_UI_Point; + /// + /// Provides access to the underlying input action "UI/Click". + /// + public InputAction @Click => m_Wrapper.m_UI_Click; + /// + /// Provides access to the underlying input action "UI/RightClick". + /// + public InputAction @RightClick => m_Wrapper.m_UI_RightClick; + /// + /// Provides access to the underlying input action "UI/MiddleClick". + /// + public InputAction @MiddleClick => m_Wrapper.m_UI_MiddleClick; + /// + /// Provides access to the underlying input action "UI/ScrollWheel". + /// + public InputAction @ScrollWheel => m_Wrapper.m_UI_ScrollWheel; + /// + /// Provides access to the underlying input action "UI/TrackedDevicePosition". + /// + public InputAction @TrackedDevicePosition => m_Wrapper.m_UI_TrackedDevicePosition; + /// + /// Provides access to the underlying input action "UI/TrackedDeviceOrientation". + /// + public InputAction @TrackedDeviceOrientation => m_Wrapper.m_UI_TrackedDeviceOrientation; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_UI; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(UIActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IUIActions instance) + { + if (instance == null || m_Wrapper.m_UIActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_UIActionsCallbackInterfaces.Add(instance); + @Navigate.started += instance.OnNavigate; + @Navigate.performed += instance.OnNavigate; + @Navigate.canceled += instance.OnNavigate; + @Submit.started += instance.OnSubmit; + @Submit.performed += instance.OnSubmit; + @Submit.canceled += instance.OnSubmit; + @Cancel.started += instance.OnCancel; + @Cancel.performed += instance.OnCancel; + @Cancel.canceled += instance.OnCancel; + @Point.started += instance.OnPoint; + @Point.performed += instance.OnPoint; + @Point.canceled += instance.OnPoint; + @Click.started += instance.OnClick; + @Click.performed += instance.OnClick; + @Click.canceled += instance.OnClick; + @RightClick.started += instance.OnRightClick; + @RightClick.performed += instance.OnRightClick; + @RightClick.canceled += instance.OnRightClick; + @MiddleClick.started += instance.OnMiddleClick; + @MiddleClick.performed += instance.OnMiddleClick; + @MiddleClick.canceled += instance.OnMiddleClick; + @ScrollWheel.started += instance.OnScrollWheel; + @ScrollWheel.performed += instance.OnScrollWheel; + @ScrollWheel.canceled += instance.OnScrollWheel; + @TrackedDevicePosition.started += instance.OnTrackedDevicePosition; + @TrackedDevicePosition.performed += instance.OnTrackedDevicePosition; + @TrackedDevicePosition.canceled += instance.OnTrackedDevicePosition; + @TrackedDeviceOrientation.started += instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.performed += instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.canceled += instance.OnTrackedDeviceOrientation; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IUIActions instance) + { + @Navigate.started -= instance.OnNavigate; + @Navigate.performed -= instance.OnNavigate; + @Navigate.canceled -= instance.OnNavigate; + @Submit.started -= instance.OnSubmit; + @Submit.performed -= instance.OnSubmit; + @Submit.canceled -= instance.OnSubmit; + @Cancel.started -= instance.OnCancel; + @Cancel.performed -= instance.OnCancel; + @Cancel.canceled -= instance.OnCancel; + @Point.started -= instance.OnPoint; + @Point.performed -= instance.OnPoint; + @Point.canceled -= instance.OnPoint; + @Click.started -= instance.OnClick; + @Click.performed -= instance.OnClick; + @Click.canceled -= instance.OnClick; + @RightClick.started -= instance.OnRightClick; + @RightClick.performed -= instance.OnRightClick; + @RightClick.canceled -= instance.OnRightClick; + @MiddleClick.started -= instance.OnMiddleClick; + @MiddleClick.performed -= instance.OnMiddleClick; + @MiddleClick.canceled -= instance.OnMiddleClick; + @ScrollWheel.started -= instance.OnScrollWheel; + @ScrollWheel.performed -= instance.OnScrollWheel; + @ScrollWheel.canceled -= instance.OnScrollWheel; + @TrackedDevicePosition.started -= instance.OnTrackedDevicePosition; + @TrackedDevicePosition.performed -= instance.OnTrackedDevicePosition; + @TrackedDevicePosition.canceled -= instance.OnTrackedDevicePosition; + @TrackedDeviceOrientation.started -= instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.performed -= instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.canceled -= instance.OnTrackedDeviceOrientation; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IUIActions instance) + { + if (m_Wrapper.m_UIActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IUIActions instance) + { + foreach (var item in m_Wrapper.m_UIActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_UIActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public UIActions @UI => new UIActions(this); + private int m_KeyboardMouseSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme KeyboardMouseScheme + { + get + { + if (m_KeyboardMouseSchemeIndex == -1) m_KeyboardMouseSchemeIndex = asset.FindControlSchemeIndex("Keyboard&Mouse"); + return asset.controlSchemes[m_KeyboardMouseSchemeIndex]; + } + } + private int m_GamepadSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme GamepadScheme + { + get + { + if (m_GamepadSchemeIndex == -1) m_GamepadSchemeIndex = asset.FindControlSchemeIndex("Gamepad"); + return asset.controlSchemes[m_GamepadSchemeIndex]; + } + } + private int m_TouchSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme TouchScheme + { + get + { + if (m_TouchSchemeIndex == -1) m_TouchSchemeIndex = asset.FindControlSchemeIndex("Touch"); + return asset.controlSchemes[m_TouchSchemeIndex]; + } + } + private int m_JoystickSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme JoystickScheme + { + get + { + if (m_JoystickSchemeIndex == -1) m_JoystickSchemeIndex = asset.FindControlSchemeIndex("Joystick"); + return asset.controlSchemes[m_JoystickSchemeIndex]; + } + } + private int m_XRSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme XRScheme + { + get + { + if (m_XRSchemeIndex == -1) m_XRSchemeIndex = asset.FindControlSchemeIndex("XR"); + return asset.controlSchemes[m_XRSchemeIndex]; + } + } + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Player" which allows adding and removing callbacks. + /// + /// + /// + public interface IPlayerActions + { + /// + /// Method invoked when associated input action "Move" is either , or . + /// + /// + /// + /// + void OnMove(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Look" is either , or . + /// + /// + /// + /// + void OnLook(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Attack" is either , or . + /// + /// + /// + /// + void OnAttack(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Interact" is either , or . + /// + /// + /// + /// + void OnInteract(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Crouch" is either , or . + /// + /// + /// + /// + void OnCrouch(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Jump" is either , or . + /// + /// + /// + /// + void OnJump(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Previous" is either , or . + /// + /// + /// + /// + void OnPrevious(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Next" is either , or . + /// + /// + /// + /// + void OnNext(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Sprint" is either , or . + /// + /// + /// + /// + void OnSprint(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Mouse" is either , or . + /// + /// + /// + /// + void OnMouse(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. + /// + /// + /// + public interface IUIActions + { + /// + /// Method invoked when associated input action "Navigate" is either , or . + /// + /// + /// + /// + void OnNavigate(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Submit" is either , or . + /// + /// + /// + /// + void OnSubmit(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Cancel" is either , or . + /// + /// + /// + /// + void OnCancel(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Point" is either , or . + /// + /// + /// + /// + void OnPoint(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Click" is either , or . + /// + /// + /// + /// + void OnClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "RightClick" is either , or . + /// + /// + /// + /// + void OnRightClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "MiddleClick" is either , or . + /// + /// + /// + /// + void OnMiddleClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "ScrollWheel" is either , or . + /// + /// + /// + /// + void OnScrollWheel(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "TrackedDevicePosition" is either , or . + /// + /// + /// + /// + void OnTrackedDevicePosition(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "TrackedDeviceOrientation" is either , or . + /// + /// + /// + /// + void OnTrackedDeviceOrientation(InputAction.CallbackContext context); + } +} diff --git a/Assets/Scripts/InputSystem.cs.meta b/Assets/Scripts/InputSystem.cs.meta new file mode 100644 index 0000000..12b2a23 --- /dev/null +++ b/Assets/Scripts/InputSystem.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6eebf4006a33ccf4385b253ac8a23f35 \ No newline at end of file diff --git a/Assets/Scripts/LivingEntity.cs b/Assets/Scripts/LivingEntity.cs new file mode 100644 index 0000000..0739e69 --- /dev/null +++ b/Assets/Scripts/LivingEntity.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; + +public class LivingEntity : MonoBehaviour +{ + public float health; + public void Damage(float amount) + { + health -= amount; + if (health <= 0) + { + Destroy(gameObject); + } + } + private void OnTriggerEnter2D(Collider2D other) + { + if (other.gameObject.layer == LayerMask.NameToLayer("Bullet")) + { + Destroy(gameObject); + other.gameObject.SetActive(false); + } + } +} diff --git a/Assets/Scripts/LivingEntity.cs.meta b/Assets/Scripts/LivingEntity.cs.meta new file mode 100644 index 0000000..31da7ff --- /dev/null +++ b/Assets/Scripts/LivingEntity.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2108c5487af823a49b94fc909c22f92f \ No newline at end of file diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs new file mode 100644 index 0000000..c4b7fee --- /dev/null +++ b/Assets/Scripts/Player.cs @@ -0,0 +1,103 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.InputSystem; + +public class Player : MonoBehaviour +{ + private Camera _camera; + private Queue _bulletPool = new Queue(); + + public GameObject bulletPrefab; + public int bulletCount = 30; + + [Header("연사 설정")] + public float fireRate = 0.1f; // 총알 발사 간격 (0.1초마다 1발) + private float _fireTimer; // 발사 타이머 + private bool _isShooting; // 발사 버튼을 누르고 있는지 여부 + + void Start() + { + _camera = Camera.main; + + // 처음 클릭 시 즉시 발사되도록 타이머 초기화 + _fireTimer = fireRate; + + // 기존의 performed 대신 클릭 시작(started)과 종료(canceled) 이벤트를 연결합니다. + InputManager.InputSystem.UI.Click.started += OnShootStarted; + InputManager.InputSystem.UI.Click.canceled += OnShootCanceled; + + for (int i = 0; i < bulletCount; i++) + { + var bullet = Instantiate(bulletPrefab); + _bulletPool.Enqueue(bullet); + bullet.SetActive(false); + } + } + + // 마우스를 클릭하기 시작했을 때 + private void OnShootStarted(InputAction.CallbackContext obj) + { + _isShooting = true; + } + + // 마우스 클릭을 뗐을 때 + private void OnShootCanceled(InputAction.CallbackContext obj) + { + _isShooting = false; + } + + // InputAction.CallbackContext 매개변수를 제거하여 Update문에서 호출 가능하게 변경 + private void Shoot() + { + var peek = _bulletPool.Dequeue(); + if (peek.activeInHierarchy) + { + _bulletPool.Enqueue(peek); + peek = Instantiate(bulletPrefab, transform); + } + peek.transform.rotation = transform.rotation; + peek.transform.position = transform.position; + peek.SetActive(true); + _bulletPool.Enqueue(peek); + } + + void Update() + { + if (_camera is null) + { + return; + } + if (InputManager.InputSystem is null) + { + return; + } + + // 1. 캐릭터 회전 처리 + var mousePos = InputManager.InputSystem.Player.Mouse.ReadValue(); + var screenToWorldPoint = _camera.ScreenToWorldPoint(mousePos); + screenToWorldPoint.z = 0; + + Vector2 direction = screenToWorldPoint - transform.position; + var rad2Deg = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; + transform.rotation = Quaternion.Euler(0, 0, rad2Deg - 90); + + // 2. 연사 처리 로직 + _fireTimer += Time.deltaTime; // 타이머는 매 프레임 증가 + + if (_isShooting && _fireTimer >= fireRate) + { + Shoot(); + _fireTimer = 0f; // 발사 후 타이머 초기화 + } + } + + // 에러나 메모리 누수 방지를 위해 스크립트 파괴 시 이벤트 구독 해제 + private void OnDestroy() + { + if (InputManager.InputSystem != null) + { + InputManager.InputSystem.UI.Click.started -= OnShootStarted; + InputManager.InputSystem.UI.Click.canceled -= OnShootCanceled; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Player.cs.meta b/Assets/Scripts/Player.cs.meta new file mode 100644 index 0000000..1e44c23 --- /dev/null +++ b/Assets/Scripts/Player.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 888d5e9b7a6b20447979a287da28b419 \ No newline at end of file