시야감지 작업 완료
에너미 상태 완료
상태 변환 로직 완료

필요한건 todo 파일 보면서 확인 할 것
Todo
1. 에너미 추가학기 위한 path 하는 작업 하기
This commit is contained in:
SeonKyu_Kim 2025-09-24 18:06:09 +09:00
parent b2f82b0d58
commit b2e290df76
749 changed files with 27350 additions and 12743 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AskMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Ask2AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EditMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@ -425,53 +425,47 @@
<Reference Include="UnityEditor.OSXStandalone.Extensions"> <Reference Include="UnityEditor.OSXStandalone.Extensions">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.WindowsStandalone.Extensions">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.Android.Extensions">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.iOS.Extensions"> <Reference Include="UnityEditor.iOS.Extensions">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.YamlDotNet"> <Reference Include="Unity.VisualScripting.YamlDotNet">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/Dependencies/YamlDotNet/Unity.VisualScripting.YamlDotNet.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/Dependencies/YamlDotNet/Unity.VisualScripting.YamlDotNet.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections.LowLevel.ILSupport"> <Reference Include="Unity.Collections.LowLevel.ILSupport">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.LowLevel.ILSupport/Unity.Collections.LowLevel.ILSupport.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.LowLevel.ILSupport/Unity.Collections.LowLevel.ILSupport.dll</HintPath>
</Reference> </Reference>
<Reference Include="nunit.framework"> <Reference Include="nunit.framework">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.ext.nunit@031a54704bff/net40/unity-custom/nunit.framework.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.ext.nunit@031a54704bff/net40/unity-custom/nunit.framework.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Plastic.Antlr3.Runtime"> <Reference Include="Unity.Plastic.Antlr3.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/Unity.Plastic.Antlr3.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/Unity.Plastic.Antlr3.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Plastic.Newtonsoft.Json"> <Reference Include="Unity.Plastic.Newtonsoft.Json">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/Unity.Plastic.Newtonsoft.Json.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/Unity.Plastic.Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4netPlastic"> <Reference Include="log4netPlastic">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/log4netPlastic.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/log4netPlastic.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.IonicZip"> <Reference Include="Unity.VisualScripting.IonicZip">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll</HintPath>
</Reference> </Reference>
<Reference Include="unityplastic"> <Reference Include="unityplastic">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/unityplastic.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Lib/Editor/unityplastic.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.IO.Hashing"> <Reference Include="System.IO.Hashing">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.IO.Hashing/System.IO.Hashing.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.IO.Hashing/System.IO.Hashing.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Antlr3.Runtime"> <Reference Include="Unity.VisualScripting.Antlr3.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Runtime/VisualScripting.Flow/Dependencies/NCalc/Unity.VisualScripting.Antlr3.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Runtime/VisualScripting.Flow/Dependencies/NCalc/Unity.VisualScripting.Antlr3.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.TextureAssets"> <Reference Include="Unity.VisualScripting.TextureAssets">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/EditorAssetResources/Unity.VisualScripting.TextureAssets.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Editor/VisualScripting.Core/EditorAssetResources/Unity.VisualScripting.TextureAssets.dll</HintPath>
</Reference> </Reference>
<Reference Include="Mono.Cecil"> <Reference Include="Mono.Cecil">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.nuget.mono-cecil@d78732e851eb/Mono.Cecil.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.nuget.mono-cecil@d78732e851eb/Mono.Cecil.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe"> <Reference Include="System.Runtime.CompilerServices.Unsafe">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.iOS.Extensions.Xcode"> <Reference Include="UnityEditor.iOS.Extensions.Xcode">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
@ -482,12 +476,6 @@
<Reference Include="UnityEditor.Apple.Extensions.Common"> <Reference Include="UnityEditor.Apple.Extensions.Common">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.Apple.Extensions.Common.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.Apple.Extensions.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Android.Types">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/AndroidPlayer/Unity.Android.Types.dll</HintPath>
</Reference>
<Reference Include="Unity.Android.Gradle">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/AndroidPlayer/Unity.Android.Gradle.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.iOS.Extensions.Xcode"> <Reference Include="UnityEditor.iOS.Extensions.Xcode">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
</Reference> </Reference>
@ -867,157 +855,157 @@
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/UnityReferenceAssemblies/unity-4.8-api/Facades/netstandard.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/UnityReferenceAssemblies/unity-4.8-api/Facades/netstandard.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.TestRunner"> <Reference Include="UnityEditor.TestRunner">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEditor.TestRunner.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEditor.TestRunner.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEngine.TestRunner"> <Reference Include="UnityEngine.TestRunner">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEngine.TestRunner.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEngine.TestRunner.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Editor"> <Reference Include="Unity.RenderPipelines.Core.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.TextMeshPro"> <Reference Include="Unity.TextMeshPro">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation"> <Reference Include="Unity.AI.Navigation">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.ShaderLibrary"> <Reference Include="Unity.RenderPipelines.Core.ShaderLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.ShaderLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.ShaderLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.SettingsProvider.Editor"> <Reference Include="Unity.VisualScripting.SettingsProvider.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.SettingsProvider.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.SettingsProvider.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Editor"> <Reference Include="Unity.RenderPipelines.Universal.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Updater"> <Reference Include="Unity.AI.Navigation.Updater">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Updater.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Updater.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Timeline"> <Reference Include="Unity.Timeline">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Editor"> <Reference Include="Unity.AI.Navigation.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="PPv2URPConverters"> <Reference Include="PPv2URPConverters">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/PPv2URPConverters.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/PPv2URPConverters.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Runtime.Shared"> <Reference Include="Unity.RenderPipelines.Core.Runtime.Shared">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.Shared.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.Shared.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.2D.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.2D.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.2D.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.2D.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Shared.Editor"> <Reference Include="Unity.VisualScripting.Shared.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Shared.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Shared.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Searcher.Editor"> <Reference Include="Unity.Searcher.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Searcher.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Searcher.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.PlasticSCM.Editor"> <Reference Include="Unity.PlasticSCM.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.PlasticSCM.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.PlasticSCM.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Burst.Editor"> <Reference Include="Unity.Burst.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Core"> <Reference Include="Unity.VisualScripting.Core">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Mathematics.Editor"> <Reference Include="Unity.Mathematics.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rendering.LightTransport.Editor"> <Reference Include="Unity.Rendering.LightTransport.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rider.Editor"> <Reference Include="Unity.Rider.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rider.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rider.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Editor.ConversionSystem"> <Reference Include="Unity.AI.Navigation.Editor.ConversionSystem">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.ConversionSystem.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.ConversionSystem.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary"> <Reference Include="Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Runtime"> <Reference Include="Unity.RenderPipelines.Core.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Flow"> <Reference Include="Unity.VisualScripting.Flow">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.TextMeshPro.Editor"> <Reference Include="Unity.TextMeshPro.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Flow.Editor"> <Reference Include="Unity.VisualScripting.Flow.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualStudio.Editor"> <Reference Include="Unity.VisualStudio.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualStudio.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualStudio.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections"> <Reference Include="Unity.Collections">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.InputSystem.ForUI"> <Reference Include="Unity.InputSystem.ForUI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.ForUI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.ForUI.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.GPUDriven.Runtime"> <Reference Include="Unity.RenderPipelines.GPUDriven.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Timeline.Editor"> <Reference Include="Unity.Timeline.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.State.Editor"> <Reference Include="Unity.VisualScripting.State.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Mathematics"> <Reference Include="Unity.Mathematics">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Shaders"> <Reference Include="Unity.RenderPipelines.Universal.Shaders">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Shaders.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Shaders.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEngine.UI"> <Reference Include="UnityEngine.UI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Multiplayer.Center.Common"> <Reference Include="Unity.Multiplayer.Center.Common">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Common.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Burst"> <Reference Include="Unity.Burst">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Core.Editor"> <Reference Include="Unity.VisualScripting.Core.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Multiplayer.Center.Editor"> <Reference Include="Unity.Multiplayer.Center.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rendering.LightTransport.Runtime"> <Reference Include="Unity.Rendering.LightTransport.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.State"> <Reference Include="Unity.VisualScripting.State">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Config.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.Config.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Config.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Config.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipeline.Universal.ShaderLibrary"> <Reference Include="Unity.RenderPipeline.Universal.ShaderLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipeline.Universal.ShaderLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipeline.Universal.ShaderLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections.Editor"> <Reference Include="Unity.Collections.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.ShaderGraph.Editor"> <Reference Include="Unity.ShaderGraph.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.ShaderGraph.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.ShaderGraph.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Editor.Shared"> <Reference Include="Unity.RenderPipelines.Core.Editor.Shared">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.Shared.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.Shared.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.InputSystem"> <Reference Include="Unity.InputSystem">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.UI"> <Reference Include="UnityEditor.UI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEditor.UI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEditor.UI.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -50,14 +50,16 @@
<Compile Include="Assets/Scripts/UI/VirtualJoystick.cs" /> <Compile Include="Assets/Scripts/UI/VirtualJoystick.cs" />
<Compile Include="Assets/Scripts/Utils/Poolable.cs" /> <Compile Include="Assets/Scripts/Utils/Poolable.cs" />
<Compile Include="Assets/Settings/InputActions.cs" /> <Compile Include="Assets/Settings/InputActions.cs" />
<Compile Include="Assets/Scripts/AI/DetectionSystem.cs" />
<Compile Include="Assets/Scripts/Movements/Movement_Ground.cs" /> <Compile Include="Assets/Scripts/Movements/Movement_Ground.cs" />
<Compile Include="Assets/Scripts/Movements/Movement_Base.cs" /> <Compile Include="Assets/Scripts/Movements/Movement_Base.cs" />
<Compile Include="Assets/Joystick Pack/Scripts/Joysticks/FloatingJoystick.cs" /> <Compile Include="Assets/Joystick Pack/Scripts/Joysticks/FloatingJoystick.cs" />
<Compile Include="Assets/Scripts/Managers/AnimatorManager.cs" /> <Compile Include="Assets/Scripts/Managers/AnimatorManager.cs" />
<Compile Include="Assets/Scripts/Contents/Status_Enemy.cs" /> <Compile Include="Assets/Scripts/Contents/Status_Enemy.cs" />
<Compile Include="Assets/Scripts/AI/Movement.cs" />
<Compile Include="Assets/Scripts/Contents/Status_Player.cs" /> <Compile Include="Assets/Scripts/Contents/Status_Player.cs" />
<Compile Include="Assets/Scripts/AI/State/AI_State.cs" />
<Compile Include="Assets/Scripts/Controllers/PlayerController.cs" /> <Compile Include="Assets/Scripts/Controllers/PlayerController.cs" />
<Compile Include="Assets/Scripts/AI/State/Chase_State.cs" />
<Compile Include="Assets/Scripts/Controllers/EnemyController.cs" /> <Compile Include="Assets/Scripts/Controllers/EnemyController.cs" />
<Compile Include="Assets/Scripts/Managers/MovementManager.cs" /> <Compile Include="Assets/Scripts/Managers/MovementManager.cs" />
<Compile Include="Assets/Joystick Pack/Scripts/Joysticks/FixedJoystick.cs" /> <Compile Include="Assets/Joystick Pack/Scripts/Joysticks/FixedJoystick.cs" />
@ -68,17 +70,19 @@
<Compile Include="Assets/Scripts/Controllers/KnightController.cs" /> <Compile Include="Assets/Scripts/Controllers/KnightController.cs" />
<Compile Include="Assets/Joystick Pack/Scripts/Base/Joystick.cs" /> <Compile Include="Assets/Joystick Pack/Scripts/Base/Joystick.cs" />
<Compile Include="Assets/Scripts/Scenes/GameScene.cs" /> <Compile Include="Assets/Scripts/Scenes/GameScene.cs" />
<Compile Include="Assets/Scripts/AI/AI_State.cs" /> <Compile Include="Assets/Scripts/AI/State/Die_State.cs" />
<Compile Include="Assets/Joystick Pack/Examples/JoystickPlayerExample.cs" /> <Compile Include="Assets/Joystick Pack/Examples/JoystickPlayerExample.cs" />
<Compile Include="Assets/Scripts/AI/State/Attack_State.cs" />
<Compile Include="Assets/Scripts/AI/State/Idle_State.cs" />
<Compile Include="Assets/Joystick Pack/Scripts/Joysticks/VariableJoystick.cs" /> <Compile Include="Assets/Joystick Pack/Scripts/Joysticks/VariableJoystick.cs" />
<Compile Include="Assets/Scripts/Managers/PoolManager.cs" /> <Compile Include="Assets/Scripts/Managers/PoolManager.cs" />
<Compile Include="Assets/Scripts/Managers/ResourceManager.cs" /> <Compile Include="Assets/Scripts/Managers/ResourceManager.cs" />
<Compile Include="Assets/Scripts/Managers/InputManager.cs" /> <Compile Include="Assets/Scripts/Managers/InputManager.cs" />
<Compile Include="Assets/Joystick Pack/Examples/JoystickSetterExample.cs" /> <Compile Include="Assets/Joystick Pack/Examples/JoystickSetterExample.cs" />
<Compile Include="Assets/Scripts/AI/State/Patrol_State.cs" />
<Compile Include="Assets/Scripts/Controllers/CameraController.cs" /> <Compile Include="Assets/Scripts/Controllers/CameraController.cs" />
<Compile Include="Assets/Scripts/Contents/Status.cs" /> <Compile Include="Assets/Scripts/Contents/Status.cs" />
<Compile Include="Assets/Scripts/Utils/Define.cs" /> <Compile Include="Assets/Scripts/Utils/Define.cs" />
<Compile Include="Assets/Scripts/AI/Combat.cs" />
<Compile Include="Assets/Scripts/Data/EnemyData.cs" /> <Compile Include="Assets/Scripts/Data/EnemyData.cs" />
<Compile Include="Assets/Scripts/Managers/Manager.cs" /> <Compile Include="Assets/Scripts/Managers/Manager.cs" />
<None Include="Assets/Resources/Data/E_Test1.json" /> <None Include="Assets/Resources/Data/E_Test1.json" />
@ -434,22 +438,22 @@
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/Managed/UnityEngine/UnityEditor.XRModule.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/Managed/UnityEngine/UnityEditor.XRModule.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections.LowLevel.ILSupport"> <Reference Include="Unity.Collections.LowLevel.ILSupport">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.LowLevel.ILSupport/Unity.Collections.LowLevel.ILSupport.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.LowLevel.ILSupport/Unity.Collections.LowLevel.ILSupport.dll</HintPath>
</Reference> </Reference>
<Reference Include="nunit.framework"> <Reference Include="nunit.framework">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.ext.nunit@031a54704bff/net40/unity-custom/nunit.framework.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.ext.nunit@031a54704bff/net40/unity-custom/nunit.framework.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.IO.Hashing"> <Reference Include="System.IO.Hashing">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.IO.Hashing/System.IO.Hashing.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.IO.Hashing/System.IO.Hashing.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Antlr3.Runtime"> <Reference Include="Unity.VisualScripting.Antlr3.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Runtime/VisualScripting.Flow/Dependencies/NCalc/Unity.VisualScripting.Antlr3.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.visualscripting@6279e2b7c485/Runtime/VisualScripting.Flow/Dependencies/NCalc/Unity.VisualScripting.Antlr3.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Mono.Cecil"> <Reference Include="Mono.Cecil">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.nuget.mono-cecil@d78732e851eb/Mono.Cecil.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.nuget.mono-cecil@d78732e851eb/Mono.Cecil.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe"> <Reference Include="System.Runtime.CompilerServices.Unsafe">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/PackageCache/com.unity.collections@d49facba0036/Unity.Collections.Tests/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.iOS.Extensions.Xcode"> <Reference Include="UnityEditor.iOS.Extensions.Xcode">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
@ -460,12 +464,6 @@
<Reference Include="UnityEditor.Apple.Extensions.Common"> <Reference Include="UnityEditor.Apple.Extensions.Common">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.Apple.Extensions.Common.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/iOSSupport/UnityEditor.Apple.Extensions.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Android.Types">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/AndroidPlayer/Unity.Android.Types.dll</HintPath>
</Reference>
<Reference Include="Unity.Android.Gradle">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/PlaybackEngines/AndroidPlayer/Unity.Android.Gradle.dll</HintPath>
</Reference>
<Reference Include="UnityEditor.iOS.Extensions.Xcode"> <Reference Include="UnityEditor.iOS.Extensions.Xcode">
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
</Reference> </Reference>
@ -836,151 +834,151 @@
<HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/NetStandard/compat/2.1.0/shims/netfx/mscorlib.dll</HintPath> <HintPath>/Applications/Unity/Hub/Editor/6000.2.2f1/Unity.app/Contents/NetStandard/compat/2.1.0/shims/netfx/mscorlib.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Editor"> <Reference Include="Unity.RenderPipelines.Core.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.TextMeshPro"> <Reference Include="Unity.TextMeshPro">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation"> <Reference Include="Unity.AI.Navigation">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.ShaderLibrary"> <Reference Include="Unity.RenderPipelines.Core.ShaderLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.ShaderLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.ShaderLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.SettingsProvider.Editor"> <Reference Include="Unity.VisualScripting.SettingsProvider.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.SettingsProvider.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.SettingsProvider.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Editor"> <Reference Include="Unity.RenderPipelines.Universal.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Updater"> <Reference Include="Unity.AI.Navigation.Updater">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Updater.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Updater.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Timeline"> <Reference Include="Unity.Timeline">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Editor"> <Reference Include="Unity.AI.Navigation.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="PPv2URPConverters"> <Reference Include="PPv2URPConverters">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/PPv2URPConverters.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/PPv2URPConverters.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Runtime.Shared"> <Reference Include="Unity.RenderPipelines.Core.Runtime.Shared">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.Shared.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.Shared.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.2D.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.2D.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.2D.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.2D.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Shared.Editor"> <Reference Include="Unity.VisualScripting.Shared.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Shared.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Shared.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Searcher.Editor"> <Reference Include="Unity.Searcher.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Searcher.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Searcher.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.PlasticSCM.Editor"> <Reference Include="Unity.PlasticSCM.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.PlasticSCM.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.PlasticSCM.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Burst.Editor"> <Reference Include="Unity.Burst.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Core"> <Reference Include="Unity.VisualScripting.Core">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Mathematics.Editor"> <Reference Include="Unity.Mathematics.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rendering.LightTransport.Editor"> <Reference Include="Unity.Rendering.LightTransport.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rider.Editor"> <Reference Include="Unity.Rider.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rider.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rider.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.AI.Navigation.Editor.ConversionSystem"> <Reference Include="Unity.AI.Navigation.Editor.ConversionSystem">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.ConversionSystem.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.AI.Navigation.Editor.ConversionSystem.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary"> <Reference Include="Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Runtime"> <Reference Include="Unity.RenderPipelines.Core.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Flow"> <Reference Include="Unity.VisualScripting.Flow">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.TextMeshPro.Editor"> <Reference Include="Unity.TextMeshPro.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Flow.Editor"> <Reference Include="Unity.VisualScripting.Flow.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Flow.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualStudio.Editor"> <Reference Include="Unity.VisualStudio.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualStudio.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualStudio.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections"> <Reference Include="Unity.Collections">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.InputSystem.ForUI"> <Reference Include="Unity.InputSystem.ForUI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.ForUI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.ForUI.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.GPUDriven.Runtime"> <Reference Include="Unity.RenderPipelines.GPUDriven.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Timeline.Editor"> <Reference Include="Unity.Timeline.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.State.Editor"> <Reference Include="Unity.VisualScripting.State.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Mathematics"> <Reference Include="Unity.Mathematics">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Mathematics.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Shaders"> <Reference Include="Unity.RenderPipelines.Universal.Shaders">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Shaders.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Shaders.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEngine.UI"> <Reference Include="UnityEngine.UI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Multiplayer.Center.Common"> <Reference Include="Unity.Multiplayer.Center.Common">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Common.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Burst"> <Reference Include="Unity.Burst">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Burst.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.Core.Editor"> <Reference Include="Unity.VisualScripting.Core.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.Core.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Multiplayer.Center.Editor"> <Reference Include="Unity.Multiplayer.Center.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Multiplayer.Center.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Rendering.LightTransport.Runtime"> <Reference Include="Unity.Rendering.LightTransport.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Rendering.LightTransport.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.VisualScripting.State"> <Reference Include="Unity.VisualScripting.State">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.VisualScripting.State.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Universal.Config.Runtime"> <Reference Include="Unity.RenderPipelines.Universal.Config.Runtime">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Config.Runtime.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Universal.Config.Runtime.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipeline.Universal.ShaderLibrary"> <Reference Include="Unity.RenderPipeline.Universal.ShaderLibrary">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipeline.Universal.ShaderLibrary.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipeline.Universal.ShaderLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.Collections.Editor"> <Reference Include="Unity.Collections.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.Collections.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.ShaderGraph.Editor"> <Reference Include="Unity.ShaderGraph.Editor">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.ShaderGraph.Editor.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.ShaderGraph.Editor.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.RenderPipelines.Core.Editor.Shared"> <Reference Include="Unity.RenderPipelines.Core.Editor.Shared">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.Shared.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.RenderPipelines.Core.Editor.Shared.dll</HintPath>
</Reference> </Reference>
<Reference Include="Unity.InputSystem"> <Reference Include="Unity.InputSystem">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/Unity.InputSystem.dll</HintPath>
</Reference> </Reference>
<Reference Include="UnityEditor.UI"> <Reference Include="UnityEditor.UI">
<HintPath>/Users/seankim/1.Program/7. Unity/Practice_Unity/Library/ScriptAssemblies/UnityEditor.UI.dll</HintPath> <HintPath>/Users/ta9/DEV/Study/Practice_Unity/Library/ScriptAssemblies/UnityEditor.UI.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

3
Assets/Gemini.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 50a089c5b7d440b0a812f34443806c57
timeCreated: 1758673257

View File

@ -1,4 +1,4 @@
# Gemini To-Do List # To-Do List
## 작성 규칙 ## 작성 규칙
1. 날짜를 가장 상위에 작성한다. 1. 날짜를 가장 상위에 작성한다.
2. 할일 - 상태를 순서대로 작성한다. 2. 할일 - 상태를 순서대로 작성한다.
@ -10,10 +10,21 @@
3. `Movement_Ground.cs` 기능 확인 및 필요 기능 구현 - 대기 3. `Movement_Ground.cs` 기능 확인 및 필요 기능 구현 - 대기
--- ---
2025-09-24 2025-09-24
1. `EnemyController.cs``Init(EnemyData data)` 메서드 구현 - 대기 1. `EnemyController.cs``Init(EnemyData data)` 메서드 구현 - 완료
2. `EnemyData``Status_Enemy` 정의 확인 및 필요 시 구현 - 대기 2. `EnemyData``Status_Enemy` 정의 확인 및 필요 시 구현 - 완료
3. `Assets/Scripts/AI/States/` 폴더 내에 상태 클래스들 생성 (`IdleState.cs`, `PatrolState.cs`, `ChaseState.cs`, `AttackState.cs`, `DieState.cs`) - 대기 3. `Assets/Scripts/AI/States/` 폴더 내에 상태 클래스들 생성 (`IdleState.cs`, `PatrolState.cs`, `ChaseState.cs`, `AttackState.cs`, `DieState.cs`) - 완료
4. `Movement` 기본 클래스/인터페이스 및 `Movement_Ground.cs` 기능 확인 (`MoveTo`, `Stop` 메서드) - 대기 4. `Movement` 기본 클래스/인터페이스 및 `Movement_Ground.cs` 기능 확인 (`MoveTo`, `Stop` 메서드) - 완료
---
2025-09-25
1. `Manager.cs` 싱글톤 이중 초기화 문제 해결 (제안된 포괄적 수정 적용) - 대기
2. `InputActions.Finalize()` 경고 원인 파악 및 해결 (로그 분석 및 `Manager.cs` 수정 후 재확인) - 대기
3. `DetectionSystem.cs` 시각 감지 로직 구현 (변수 오타 수정, `Awake()` 초기화, `LayerMask` 적용, `DStage``IsTargetInSight` setter 수정, `_targetTransitionDuration` 제거) - 대기
4. `DetectionSystem.cs` 청각 감지 로직 구현 - 대기
5. `Idle_State.cs` 행동 로직 구현 - 대기
6. `Patrol_State.cs` 행동 로직 구현 - 대기
7. `Chase_State.cs` 행동 로직 구현 - 대기
8. `Attack_State.cs` 행동 로직 구현 - 대기
9. `Die_State.cs` 행동 로직 구현 - 대기
----------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------
# 상세 # 상세
@ -26,14 +37,14 @@ To-Do 리스트에 해야할 내용을 상세하게 작성한다.
- `private AI_State _currentState;` 변수를 추가하여 현재 상태를 관리합니다. (완료) - `private AI_State _currentState;` 변수를 추가하여 현재 상태를 관리합니다. (완료)
- `public AI_State CurrentState { get; set; }` 프로퍼티를 구현하여 상태를 안전하게 전환합니다. (완료) - `public AI_State CurrentState { get; set; }` 프로퍼티를 구현하여 상태를 안전하게 전환합니다. (완료)
- `Update()` 메서드를 `_currentState?.Update();` 한 줄로 수정하여, 현재 상태의 로직만 실행되도록 합니다. (완료) - `Update()` 메서드를 `_currentState?.Update();` 한 줄로 수정하여, 현재 상태의 로직만 실행되도록 합니다. (완료)
- `EnemyData`를 외부에서 받아 `Status_Enemy`를 포함한 각종 능력치를 초기화하는 `Init(EnemyData data)` 메서드를 구현합니다. (대기) - `EnemyData`를 외부에서 받아 `Status_Enemy`를 포함한 각종 능력치를 초기화하는 `Init(EnemyData data)` 메서드를 구현합니다. (완료)
### 2. `EnemyController.cs``Init(EnemyData data)` 메서드 구현 ### 2. `EnemyController.cs``Init(EnemyData data)` 메서드 구현
- **목표:** `EnemyController`가 외부에서 주입된 `EnemyData`를 기반으로 초기화될 수 있도록 합니다. - **목표:** `EnemyController`가 외부에서 주입된 `EnemyData`를 기반으로 초기화될 수 있도록 합니다.
- **세부 작업:** - **세부 작업:**
- `EnemyData` 클래스의 정의를 확인합니다. (필요 시 생성) - `EnemyData` 클래스의 정의를 확인합니다. (필요 시 생성) (완료)
- `Status_Enemy` 클래스의 정의를 확인합니다. (필요 시 생성) - `Status_Enemy` 클래스의 정의를 확인합니다. (필요 시 생성) (완료)
- `public void Init(EnemyData data)` 메서드를 `EnemyController.cs`에 추가하고, `data`를 사용하여 `_type``_status`를 초기화합니다. - `public void Init(EnemyData data)` 메서드를 `EnemyController.cs`에 추가하고, `data`를 사용하여 `_type``_status`를 초기화합니다. (완료)
- `_movement` 컴포넌트가 스포너에 의해 주입되는 방식에 따라 `_movement` 참조를 설정하는 로직을 추가합니다. - `_movement` 컴포넌트가 스포너에 의해 주입되는 방식에 따라 `_movement` 참조를 설정하는 로직을 추가합니다.
### 3. 상태 (State) 클래스 생성 ### 3. 상태 (State) 클래스 생성
@ -49,11 +60,11 @@ To-Do 리스트에 해야할 내용을 상세하게 작성한다.
### 4. `Movement` 기본 클래스/인터페이스 및 `Movement_Ground.cs` 기능 확인 ### 4. `Movement` 기본 클래스/인터페이스 및 `Movement_Ground.cs` 기능 확인
- **목표:** 상태 클래스들이 적을 움직이는 데 필요한 기능이 `Movement` 기본 클래스/인터페이스와 `Movement_Ground`에 모두 준비되어 있는지 확인하고, 없다면 구현합니다. - **목표:** 상태 클래스들이 적을 움직이는 데 필요한 기능이 `Movement` 기본 클래스/인터페이스와 `Movement_Ground`에 모두 준비되어 있는지 확인하고, 없다면 구현합니다.
- **세부 작업:** - **세부 작업:**
- `Movement` 기본 클래스 또는 인터페이스의 정의를 확인합니다. - `Movement` 기본 클래스 또는 인터페이스의 정의를 확인합니다. (완료)
- `Movement_Ground.cs` 코드를 분석합니다. - `Movement_Ground.cs` 코드를 분석합니다. (완료)
- `PatrolState``ChaseState`에서 사용할 기능이 있는지 확인합니다. - `PatrolState``ChaseState`에서 사용할 기능이 있는지 확인합니다. (완료)
- 특정 지점으로 이동시키는 `MoveTo(Vector3 destination)` - 특정 지점으로 이동시키는 `MoveTo(Vector3 destination)` (완료)
- 이동을 멈추는 `Stop()` - 이동을 멈추는 `Stop()` (완료)
- 만약 기능이 없다면, `NavMeshAgent`를 사용하는 등의 방식으로 해당 기능들을 구현할 것을 제안합니다. - 만약 기능이 없다면, `NavMeshAgent`를 사용하는 등의 방식으로 해당 기능들을 구현할 것을 제안합니다.
@ -68,4 +79,4 @@ To-Do 리스트에 해야할 내용을 상세하게 작성한다.
* **확인 필요:** * **확인 필요:**
* 스포너에서 `Movement` 컴포넌트를 `GameObject`에 추가한 후 `EnemyController``GetComponent<Movement>()`를 통해 참조를 가져올 것인지, * 스포너에서 `Movement` 컴포넌트를 `GameObject`에 추가한 후 `EnemyController``GetComponent<Movement>()`를 통해 참조를 가져올 것인지,
* 아니면 스포너가 `EnemyController` 인스턴스에 직접 `_movement`를 할당할 것인지 명확히 해야 합니다. * 아니면 스포너가 `EnemyController` 인스턴스에 직접 `_movement`를 할당할 것인지 명확히 해야 합니다.
* `EnemyController``Init(EnemyData data)` 메서드 내에서 `_movement` 참조를 설정하는 로직이 필요할 수 있습니다. * `EnemyController``Init(EnemyData data)` 메서드 내에서 `_movement` 참조를 설정하는 로직이 필요할 수 있습니다

View File

@ -9,7 +9,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 4778676094823477909} - component: {fileID: 4778676094823477909}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Thigh m_Name: B_L_Thigh
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -41,7 +41,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 4859304062926792237} - component: {fileID: 4859304062926792237}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger21 m_Name: B_L_Finger21
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -73,7 +73,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8157045581365800638} - component: {fileID: 8157045581365800638}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger21 m_Name: B_R_Finger21
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -106,7 +106,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 5360434967777863390} - component: {fileID: 5360434967777863390}
- component: {fileID: 4411371546788146881} - component: {fileID: 4411371546788146881}
m_Layer: 0 m_Layer: 10
m_Name: Mesh-Knight-Weapon m_Name: Mesh-Knight-Weapon
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -197,7 +197,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7998685088300484659} - component: {fileID: 7998685088300484659}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger32 m_Name: B_L_Finger32
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -228,7 +228,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6978039536947415800} - component: {fileID: 6978039536947415800}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger1 m_Name: B_R_Finger1
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -261,7 +261,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 1450618590007692681} - component: {fileID: 1450618590007692681}
- component: {fileID: 3936301313033158718} - component: {fileID: 3936301313033158718}
m_Layer: 0 m_Layer: 10
m_Name: Knight m_Name: Knight
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -318,7 +318,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 9178303082942139264} - component: {fileID: 9178303082942139264}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger3 m_Name: B_L_Finger3
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -350,7 +350,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8191030318363791099} - component: {fileID: 8191030318363791099}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger22 m_Name: B_L_Finger22
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -381,7 +381,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8003529987540003319} - component: {fileID: 8003529987540003319}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger31 m_Name: B_L_Finger31
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -413,7 +413,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6382647935953178892} - component: {fileID: 6382647935953178892}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger11 m_Name: B_L_Finger11
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -445,7 +445,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 2085879951685081222} - component: {fileID: 2085879951685081222}
m_Layer: 0 m_Layer: 10
m_Name: B_L_UpperArm m_Name: B_L_UpperArm
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -477,7 +477,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 68707088041218141} - component: {fileID: 68707088041218141}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger2 m_Name: B_R_Finger2
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -509,7 +509,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3298049026048185638} - component: {fileID: 3298049026048185638}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger0 m_Name: B_R_Finger0
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -541,7 +541,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 2885879221041696982} - component: {fileID: 2885879221041696982}
m_Layer: 0 m_Layer: 10
m_Name: B_Head m_Name: B_Head
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -572,7 +572,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6697110143742363728} - component: {fileID: 6697110143742363728}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger41 m_Name: B_R_Finger41
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -604,7 +604,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1047511963363789617} - component: {fileID: 1047511963363789617}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger01 m_Name: B_L_Finger01
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -636,7 +636,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1411537051984745267} - component: {fileID: 1411537051984745267}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger12 m_Name: B_R_Finger12
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -667,7 +667,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1284499679393725060} - component: {fileID: 1284499679393725060}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Toe0 m_Name: B_L_Toe0
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -698,7 +698,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5098570279765429227} - component: {fileID: 5098570279765429227}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger3 m_Name: B_R_Finger3
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -730,7 +730,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3383848914123910534} - component: {fileID: 3383848914123910534}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Clavicle m_Name: B_L_Clavicle
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -762,7 +762,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7689136017497831512} - component: {fileID: 7689136017497831512}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Clavicle m_Name: B_R_Clavicle
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -794,7 +794,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 4276193392744348850} - component: {fileID: 4276193392744348850}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger02 m_Name: B_R_Finger02
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -825,7 +825,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1496763339304417656} - component: {fileID: 1496763339304417656}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Calf m_Name: B_R_Calf
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -857,7 +857,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7065118994803877065} - component: {fileID: 7065118994803877065}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger01 m_Name: B_R_Finger01
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -889,7 +889,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 2150927207232904024} - component: {fileID: 2150927207232904024}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Hand m_Name: B_R_Hand
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -925,7 +925,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8926621314447626377} - component: {fileID: 8926621314447626377}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger41 m_Name: B_L_Finger41
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -957,7 +957,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3509437264251218943} - component: {fileID: 3509437264251218943}
m_Layer: 0 m_Layer: 10
m_Name: B_Spine m_Name: B_Spine
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -989,7 +989,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8608990878572578442} - component: {fileID: 8608990878572578442}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger02 m_Name: B_L_Finger02
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1020,7 +1020,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 2558896465385636048} - component: {fileID: 2558896465385636048}
m_Layer: 0 m_Layer: 10
m_Name: Motion m_Name: Motion
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1052,7 +1052,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7081532895056036375} - component: {fileID: 7081532895056036375}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger32 m_Name: B_R_Finger32
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1083,7 +1083,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 693679399105089568} - component: {fileID: 693679399105089568}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Toe0 m_Name: B_R_Toe0
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1114,7 +1114,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8259789175430751094} - component: {fileID: 8259789175430751094}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger1 m_Name: B_L_Finger1
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1147,7 +1147,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 1875652812996256773} - component: {fileID: 1875652812996256773}
- component: {fileID: 4376253125351637720} - component: {fileID: 4376253125351637720}
m_Layer: 0 m_Layer: 10
m_Name: Mesh-Knight m_Name: Mesh-Knight
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1289,7 +1289,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 981115575595510644} - component: {fileID: 981115575595510644}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger4 m_Name: B_R_Finger4
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1322,7 +1322,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 6751205923348218536} - component: {fileID: 6751205923348218536}
- component: {fileID: 8051178392408058451} - component: {fileID: 8051178392408058451}
m_Layer: 0 m_Layer: 10
m_Name: Mesh-Knight-Shield m_Name: Mesh-Knight-Shield
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1413,7 +1413,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3685995163545211864} - component: {fileID: 3685995163545211864}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Hand m_Name: B_L_Hand
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1449,7 +1449,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3626733173397236830} - component: {fileID: 3626733173397236830}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Calf m_Name: B_L_Calf
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1481,7 +1481,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3489194044207728346} - component: {fileID: 3489194044207728346}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger2 m_Name: B_L_Finger2
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1513,7 +1513,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1285911602779609200} - component: {fileID: 1285911602779609200}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Foot m_Name: B_R_Foot
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1545,7 +1545,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 4837730701960348164} - component: {fileID: 4837730701960348164}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger42 m_Name: B_L_Finger42
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1576,7 +1576,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1901468086570788684} - component: {fileID: 1901468086570788684}
m_Layer: 0 m_Layer: 10
m_Name: B_Neck m_Name: B_Neck
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1608,7 +1608,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5209676379285972281} - component: {fileID: 5209676379285972281}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger22 m_Name: B_R_Finger22
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1639,7 +1639,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5804870161279023834} - component: {fileID: 5804870161279023834}
m_Layer: 0 m_Layer: 10
m_Name: B_Spine1 m_Name: B_Spine1
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1673,7 +1673,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 1547980756263868922} - component: {fileID: 1547980756263868922}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Thigh m_Name: B_R_Thigh
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1705,7 +1705,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3792170900997148379} - component: {fileID: 3792170900997148379}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger42 m_Name: B_R_Finger42
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1736,7 +1736,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8102721084253173512} - component: {fileID: 8102721084253173512}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger4 m_Name: B_L_Finger4
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1768,7 +1768,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8163662108971216726} - component: {fileID: 8163662108971216726}
m_Layer: 0 m_Layer: 10
m_Name: B_Pelvis m_Name: B_Pelvis
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1802,7 +1802,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 8171987272917210595} - component: {fileID: 8171987272917210595}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Forearm m_Name: B_L_Forearm
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1834,7 +1834,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5022419479691398014} - component: {fileID: 5022419479691398014}
m_Layer: 0 m_Layer: 10
m_Name: B_R_UpperArm m_Name: B_R_UpperArm
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1866,7 +1866,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5935596643350493947} - component: {fileID: 5935596643350493947}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Foot m_Name: B_L_Foot
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -1903,7 +1903,7 @@ GameObject:
- component: {fileID: 1131269847306242248} - component: {fileID: 1131269847306242248}
- component: {fileID: 6582010247899559448} - component: {fileID: 6582010247899559448}
- component: {fileID: 6535369135998422679} - component: {fileID: 6535369135998422679}
m_Layer: 0 m_Layer: 10
m_Name: Player m_Name: Player
m_TagString: Player m_TagString: Player
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -2010,6 +2010,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 72ac6332eec1047a49dd2a67785a1557, type: 3} m_Script: {fileID: 11500000, guid: 72ac6332eec1047a49dd2a67785a1557, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerController m_EditorClassIdentifier: Assembly-CSharp::PlayerController
_rotationSpeed: 10
--- !u!114 &6535369135998422679 --- !u!114 &6535369135998422679
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2043,7 +2044,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3006635609086174951} - component: {fileID: 3006635609086174951}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger31 m_Name: B_R_Finger31
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -2075,7 +2076,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 601112546836363042} - component: {fileID: 601112546836363042}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Forearm m_Name: B_R_Forearm
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -2107,7 +2108,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 7361479502577139924} - component: {fileID: 7361479502577139924}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger0 m_Name: B_L_Finger0
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -2139,7 +2140,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6198250055932624292} - component: {fileID: 6198250055932624292}
m_Layer: 0 m_Layer: 10
m_Name: B_R_Finger11 m_Name: B_R_Finger11
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@ -2171,7 +2172,7 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 3245866075145704355} - component: {fileID: 3245866075145704355}
m_Layer: 0 m_Layer: 10
m_Name: B_L_Finger12 m_Name: B_L_Finger12
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}

View File

@ -64,7 +64,7 @@ MonoBehaviour:
m_MoveRepeatDelay: 0.5 m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1 m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 0} m_XRTrackingOrigin: {fileID: 0}
m_ActionsAsset: {fileID: -944628639613478452, guid: a9e30bcf6f9514a958beb76de3298015, type: 3} m_ActionsAsset: {fileID: 0}
m_PointAction: {fileID: 7941888863669854430, guid: a9e30bcf6f9514a958beb76de3298015, type: 3} m_PointAction: {fileID: 7941888863669854430, guid: a9e30bcf6f9514a958beb76de3298015, type: 3}
m_MoveAction: {fileID: 0} m_MoveAction: {fileID: 0}
m_SubmitAction: {fileID: 0} m_SubmitAction: {fileID: 0}

View File

@ -1,14 +0,0 @@
using UnityEngine;
public class Combat : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
}

View File

@ -0,0 +1,213 @@
using System;
using UnityEngine;
public class DetectionSystem : MonoBehaviour
{
public enum DetectionStage
{
Stage0,
Stage1,
Stage2,
Stage3
}
[SerializeField] private DetectionStage _dStage = DetectionStage.Stage0;
public DetectionStage DStage { get { return _dStage; } private set { _dStage = value; } }
public event Action<DetectionStage> OnDetectionStageChanged;
[Header("Target")]
[SerializeField] private LayerMask _targetLayers;
[SerializeField] private Transform _targetCharacter; // 타겟 캐릭터
[SerializeField] private Vector3 _lastKnownPosition; // 마지막으로 알려진 위치
[SerializeField] private Vector3 _suspiciousPosition; // 의심스러운 위치
[Header("Sight Detection")]
[SerializeField] private float _fieldOfViewAngle = 120f; // 시야각
[SerializeField] private float _maxSightDistance = 40f; // 최대 거리
[SerializeField] private float _detectionDistance = 20f; // 감지 거리
[SerializeField] private float _recognitionDistance = 15f; // 인식 거리
[SerializeField] private LayerMask _obstacleLayers; // 장애물 레이어
[Header("Hearing Detection")]
[SerializeField] private float _maxAudioDistanse = 25f; // 청각 감지 최대 거리
private bool _isTargetInSight = false; // 타겟이 시야에 있는지 여부
private float _currentTransitionTimer = 0f;
private float _targetTransitionDuration = 0f;
public Transform TargetCharacter { get => _targetCharacter; set => _targetCharacter = value; }
public Vector3 LastKnownPosition { get => _lastKnownPosition; set => _lastKnownPosition = value; }
public Vector3 SuspiciousPosition { get => _suspiciousPosition; set => _suspiciousPosition = value; }
public bool IsTargetInSight { get => _isTargetInSight; set => _isTargetInSight = value; }
private void Awake()
{
if (TargetCharacter == null)
{
Collider[] hitColliders = Physics.OverlapSphere(transform.position, _maxSightDistance, _targetLayers);
Transform closestTarget = null;
float minDistance = Mathf.Infinity;
foreach (var hitCollider in hitColliders)
{
float distance = Vector3.Distance(transform.position, hitCollider.transform.position);
if (distance < minDistance)
{
minDistance = distance;
closestTarget = hitCollider.transform;
}
}
if (closestTarget != null)
{
TargetCharacter = closestTarget;
}
else
{
Debug.LogWarning("No target found within sight distance.");
}
}
}
private void Update()
{
SightDetection();
UpdateDetectionStage();
}
private void UpdateDetectionStage(DetectionStage newStage)
{
if (_dStage != newStage)
{
_dStage = newStage;
OnDetectionStageChanged?.Invoke(_dStage);
_currentTransitionTimer = 0f;
}
}
private void SightDetection()
{
_isTargetInSight = false;
if (TargetCharacter == null) return;
Vector3 directionToTarget = (TargetCharacter.position - transform.position).normalized;
float distanceToTarget = Vector3.Distance(TargetCharacter.position, transform.position);
float angleToTarget = Vector3.Angle(transform.forward, directionToTarget);
if (angleToTarget < _fieldOfViewAngle / 2f) // 나누기 2 하는 이유 : 시야각이 중심 기준 좌로 60/ 우로 60으로 측정했기 떄문임
{
if (distanceToTarget <= _maxSightDistance) // 최대 거리 확인 : 역전환 3->2 갈떄 사용
{
RaycastHit hit;
Vector3 rayOrigin = transform.position + Vector3.up * 0.5f;
// 레이캐스팅 필터링을 위해 레이어 2개 사용 (장애물, 타겟)
if (Physics.Raycast(rayOrigin, directionToTarget, out hit, distanceToTarget,
_obstacleLayers | _targetLayers))
{
// 타겟인가?
if (hit.transform == TargetCharacter)
{
IsTargetInSight = true;
LastKnownPosition = TargetCharacter.position; // 마지막 본 위치 확인
}
else
{
IsTargetInSight = false;
}
}
else
{
IsTargetInSight = false;
}
}
}
}
private void UpdateDetectionStage()
{
DetectionStage stage = _dStage;
_currentTransitionTimer += Time.deltaTime;
switch (_dStage)
{
case DetectionStage.Stage0:
// 타겟이라 불릴만한게 최대 거리에 들어왔는가?
if (IsTargetInSight && Vector3.Distance(TargetCharacter.position, transform.position) <=
_detectionDistance)
{
if (_currentTransitionTimer >= 0.5f)
{
UpdateDetectionStage(DetectionStage.Stage1);
_currentTransitionTimer = 0f;
}
}
else _currentTransitionTimer = 0f;
break;
case DetectionStage.Stage1:
// 타겟이라 불릴만한게 감지 거리에 들어왔는가?
if (IsTargetInSight && Vector3.Distance(TargetCharacter.position, transform.position) <=
_detectionDistance)
{
if (_currentTransitionTimer >= 1f)
{
UpdateDetectionStage(DetectionStage.Stage2);
_currentTransitionTimer = 0f;
}
}
else
{
// 이제 역전환 조건 추가하기
if (_currentTransitionTimer >= 3f)
{
UpdateDetectionStage(DetectionStage.Stage0);
_currentTransitionTimer = 0f;
}
}
break;
case DetectionStage.Stage2:
// 타겟이라 불릴만한게 인식 거리에 들어왔는가?
if(IsTargetInSight && Vector3.Distance(TargetCharacter.position, transform.position) <= _recognitionDistance)
{
UpdateDetectionStage(DetectionStage.Stage3);
_currentTransitionTimer = 0f;
}
else
{
// 이제 역전환 조건 추가하기
if (_currentTransitionTimer >= 5f)
{
UpdateDetectionStage(DetectionStage.Stage1);
_currentTransitionTimer = 0f;
}
}
break;
case DetectionStage.Stage3:
if (!IsTargetInSight ||
Vector3.Distance(TargetCharacter.position, transform.position) <= _maxSightDistance)
{
// 전환 조건이 아닌 역전환 조건만 추가
if (_currentTransitionTimer >= 3f)
{
UpdateDetectionStage(DetectionStage.Stage2);
_currentTransitionTimer = 0f;
}
}
else
{
// 시야내로 돌아왔다? 타이머 리셋
_currentTransitionTimer = 0f;
}
break;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 79b20267422c94b67ad8649e8fa4f07d

171
Assets/Scripts/AI/Logic.md Normal file
View File

@ -0,0 +1,171 @@
# Enemy AI Logic
## 1. 개요
이 문서는 게임 내 적 AI 시스템의 설계 원칙과 구현 방법을 설명한다.
적 AI는 플레이어에게 도전적이면서도 예측 가능한 패턴을 제공하여 게임 플레이 경험을 향상시키는 것을 목표로 한다.
## 2. AI 아키텍처
### 2.1 상태 기계(State Machine)
적 AI는 기본적으로 상태 기계 패턴을 사용하여 구현되며 다음과 같은 주요 상태를 포함한다:
- **대기(Idle)**: 특별한 행동 없이 주변을 관찰 및 가벼운 주변 배회 이동
- **순찰(Patrol)**: 정해진 경로를 따라 이동
- **추적(Chase)**: 플레이어를 감지하고 추적
- **공격(Attack)**: 플레이어에게 공격 실행
- **도망(Retreat)**: 체력이 낮을 때 안전한 위치로 이동
### 2.2 결정 트리
상태 전환은 다음 조건에 따라 결정됩니다:
- 감지 시스템
- 플레이어와의 거리
- 시야각 내 플레이어 존재 여부
- 현재 체력 상태
- 마지막 공격 후 경과 시간
## 3. 감지 시스템
### 3.1 단계
- 감지 시스템에 따라 상태가 정해지며 총 4단계로 정의한다.
- 1. 0단계 : 아무런 이상 없이 감지가 되지 않는 상태
- 2. 1단계 : 이상은 감지 하였으나 타겟이 특정되지 않은 상태
- 3. 2단계 : 이상 위치를 파악한 상태
- 4. 3단계 : 이상 타겟을 특정한 상태
### 3.1 시야 감지
- Enemy의 시야에 따른 감지 범위 설정
- 시야각: 전방 120도
- 최대 거리: 30 ~ 40미터 (난이도에 따라 조정)
- 감지 거리: 15 ~ 20미터 (난이도에 따라 조정)
- 인식 거리: 0 ~ 15미터 (난이도에 따라 조정)
- 장애물 고려: 시야 차단 검사
- 시야에 따른 감지 단계 전환:
- 0단계 -> 1단계: 0.5 ~ 1초 동안 감지 거리 내에 캐릭터 오브젝트가 시야 안에 들어옴 (적대 관계인지 아닌지 파악)
- 1단계 -> 2단계: 1초 이상 감지 거리 내에 캐릭터 오브젝트가 시야 안에 들어옴
- 2단계 -> 3단계: 인식거리 내에 캐릭터 오브젝트가 시야 안에 들어옴
- 역전환 조건:
- 3단계 -> 2단계: 타겟이 최대 거리 밖으로 벗어난 상태가 3초 이상 지속되며 관찰했던 타겟의 위치를 기억
- 2단계 -> 1단계: 이상의 최종 위치로 이동 후 주변(반경 5미터 이내) 순찰 후 5초간 타겟이 발견되지 않음
- 1단계 -> 0단계: 원래 위치로 이동 후 3초간 아무런 이상이 발견되지 않음
### 3.2 청각 감지
- 플레이어 행동 소음 수준에 따른 감지 범위 설정
- 감지 거리: 10 ~ 25미터 (난이도에 따라 조정)
- 소음 발생 지수
- 장애물 고려: 청각 차단 검사
- 소음의 지수는 캐릭터 오브젝트의 움직이는 속도와 행동에 따라 결정된다.
- 측정 기준 수치 : 걷기 : 0~3의 속도 / 달리기 : 3 이상 /
- 일반적인 걷기: ((1 * 소음 방지 지수(기본 1)) * 캐릭터의 이동 속도) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 0 ~ 3
- 달리기 : ((1.2 * 소음 방지 지수(기본 1)) * 캐릭터의 이동 속도) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 3.6 이상
- 공격 : ((1.5 * 소음 방지 지수(기본 1)) * 5) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 7.5
- 소음 수준: (캐릭터 오브젝트의 소음 발생 지수에 따라 결정)
- 무소음: 0 ~ 1
- 약한 소음: 1 ~ 2.5
- 보통 소음: 2.5 ~ 4
- 큰 소음: 4 이상
- 소리에 따른 감지단계 전환:
- 0단계 -> 1단계: 약한 소음 이상이 감지 거리 내에 들어옴
- 1단계 -> 2단계: 보통 소음 이상이 감지 거리 내에 들어옴
- 2단계 -> 3단계: 큰 소음이 감지 거리 내에 들어옴
- 역전환 조건:
- 3단계 -> 2단계: 타겟이 최대 거리 밖으로 벗어난 상태가 3초 이상 지속되며 관찰했던 타겟의 위치를 기억
- 2단계 -> 1단계: 이상의 최종 위치로 이동 후 주변(반경 5미터 이내) 순찰 후 5초간 타겟이 발견되지 않음
- 1단계 -> 0단계: 원래 위치로 이동 후 3초간 아무런 이상이 발견되지 않음
## 4. 행동 패턴
### 4.1 상태
- 행동 패턴은 각 AI가 가지는 상태에 따라서 그 동작이 결정된다.
- 상태는 행동 패턴의 대기, 순찰, 전투 등과는 다른 개념이다.
- 상태의 종류는 다음과 같다:
- 일반(Normal): AI의 행동에 개입하는 어떠한 이상이나 타겟이 없는 상태로 주어진 행동 패턴에 맞는 활동을 수행한다.
- 감지(Detected): AI가 이상을 감지한 상태로 아직은 타겟을 파악하지는 못하였기에 주어진 행동 패턴에 맞는 활동을 수행하나 언제든 다음 상태로 넘어갈 수 있는 상태이다.
- 인식(Aware): AI가 이상을 인식한 상태이지만 아직도 타겟은 특정 캐릭터 관련 오브젝트가 아니라 이상이 발생한 위치이다. 이 상태에서는 주어진 행동 패턴에서 인식 상태에 맞는 활동을 수행한다.
- 탐지(Alerted): AI가 타겟을 탐지한 상태로 이때 타겟을 향해 상호작용을 진행한다. 주어진 행동 패턴에서 탐지 상태에 맞는 활동을 수행한다.
- 상태의 전환은 감지 시스템과 캐릭터 오브젝트의 상황에 따라 결정된다.
### 4.2 대기(Idle) 로직
- 주변을 천천히 관찰하며 가벼운 주변 배회 이동을 한다.
- 상태의 전환은 감지 시스템에 의해 결정된다.
- 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
- 각 상태별 대기 행동:
- 일반 상태: 정해진 반경 내 랜덤 이동 (반경 2미터 이내), 주기적인 방향 전환, 주변 환경 관찰
- 감지 상태: 의심 방향으로 돌리기, 이동 속도 감소, 주의 집중도 증가
- 인식 상태: 의심 지점으로 이동, 주변 5미터 반경 탐색, 방어 태세 준비
- 탐지 상태: 타겟 방향으로 신속 이동, 공격 준비 태세, 전투 로직 활성화
### 4.3 순찰(Patrol) 로직
- 정해진 경로를 따라 순찰하며 지점 도달 시 주변을 관찰한다.
- 무작위 대기 행동 추가로 자연스러운 움직임 구현
- 상태의 전환은 감지 시스템에 의해 결정된다.
- 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
- 각 상태별 순찰 행동:
- 일반 상태: 정해진 경로를 따라 순찰, 지점 도달 시 주변 관찰(2~4초)
- 감지 상태: 의심 방향으로 돌리기, 이동 속도 감소, 주의 집중도 증가
- 인식 상태: 의심 지점으로 이동, 주변 5미터 반경 탐색, 방어 태세 준비
- 탐지 상태: 타겟 방향으로 신속 이동, 공격 준비 태세, 전투 로직 활성화
### 4.3 전투(Attack) 로직
- 근접 공격: 플레이어와 2미터 이내일 때 실행
- 원거리 공격: 5-10미터 거리에서 실행
- 공격 쿨타임: 1-3초 (난이도에 따라 조정)
- 상태의 전환은 감지 시스템에 의해 결정된다.
- 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
- 각 상태별 전투 행동:
- 일반 상태: 비전투 태세 유지, 주변 경계
- 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
- 인식 상태: 타겟 위치로 신속 이동, 공격 준비
- 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함
### 4.4 추적(Chase) 로직
- 플레이어를 감지하면 추적 상태로 전환
- 추적 속도: 기본 이동 속도(걷기)의 1.2배
- 추적 중 플레이어가 시야에서 벗어나면 마지막 위치로 이동 후 주변 탐색
- 상태의 전환은 감지 시스템에 의해 결정된다.
- 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
- 각 상태별 추적 행동:
- 일반 상태: 비전투 태세 유지, 주변 경계
- 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
- 인식 상태: 타겟 위치로 신속 이동, 공격 준비
- 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함
### 4.5 도망(Retreat) 로직
- 체력이 20% 이하로 떨어지면 도망 상태로 전환
- 도망 속도: 기본 이동 속도의 1.2배
- 안전한 위치(예: 아군 근처, 엄폐물 뒤)로 이동
- 도망 중 플레이어가 시야에서 벗어나면 일정 시간 후 원래 위치로 복귀
- 상태의 전환은 감지 시스템에 의해 결정된다.
- 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
- 각 상태별 도망 행동:
- 일반 상태: 비전투 태세 유지, 주변 경계
- 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
- 인식 상태: 타겟 위치로 신속 이동, 공격 준비
- 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함
## 5. 경로 탐색
### 5.1 NavMesh 활용
- Unity NavMesh 시스템을 활용한 경로 계산
- 장애물 회피를 위한 NavMeshObstacle 활용
- 동적 장애물 감지 시 경로 재계산(0.5초 간격)
### 5.2 특수 이동
## 6. 성능 최적화
### 6.1 LOD 시스템
- 거리에 따른 AI 복잡도 조절
- 30미터 이상: 간소화된 행동 패턴 사용
- 50미터 이상: 시각적 업데이트만 수행
### 6.2 계산 분산
- 감지 로직 업데이트: 0.2초마다 실행
- 경로 재계산: 필요시에만 수행(최소 0.5초 간격)
## 7. 확장성
### 7.1 AI 난이도 조정
- 감지 범위, 반응 속도, 공격력 등 조정 가능한 파라미터 제공
- 난이도별 프리셋 구성
### 7.2 새로운 AI 유형 추가
- 기본 AI 컨트롤러를 상속받아 확장
- 커스텀 상태 및 전환 조건 정의 방법

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9d387a7663384037bd518295ed7ed704
timeCreated: 1758678073

View File

@ -1,14 +0,0 @@
using UnityEngine;
public class Movement : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ad832524ab368476f9b18fecc181333d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -3,10 +3,16 @@ using UnityEngine;
public abstract class AI_State public abstract class AI_State
{ {
protected EnemyController _owner; protected EnemyController _owner;
protected Transform _transform;
protected Movement_Base _movement;
protected Status _status;
public AI_State(EnemyController owner) public AI_State(EnemyController owner)
{ {
_owner = owner; _owner = owner;
_transform = owner.transform;
_movement = owner.Movement;
_status = owner.Status;
} }
public virtual void Enter() { } public virtual void Enter() { }

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class Attack_State : AI_State
{
public Attack_State(EnemyController owner) : base(owner)
{
}
public override void Enter()
{
// Debug.Log("Entering State");
// _movement.Stop();
}
public override void Update()
{
}
public override void Exit()
{
// Debug.Log("Exiting State");
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e398ed64c5214fd58494c3a8d3717c3a
timeCreated: 1758676470

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class Chase_State : AI_State
{
public Chase_State(EnemyController owner) : base(owner)
{
}
public override void Enter()
{
// Debug.Log("Entering State");
// _movement.Stop();
}
public override void Update()
{
}
public override void Exit()
{
// Debug.Log("Exiting State");
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 100f7e810aad49daa2c00341c6ca4de1
timeCreated: 1758676441

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class Die_State : AI_State
{
public Die_State(EnemyController owner) : base(owner)
{
}
public override void Enter()
{
// Debug.Log("Entering State");
// _movement.Stop();
}
public override void Update()
{
}
public override void Exit()
{
// Debug.Log("Exiting State");
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 18f563a9ff9041008bfac1bc00155500
timeCreated: 1758676536

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class Idle_State : AI_State
{
public Idle_State(EnemyController owner) : base(owner)
{
}
public override void Enter()
{
// Debug.Log("Entering Idle State");
// _movement.Stop();
}
public override void Update()
{
}
public override void Exit()
{
// Debug.Log("Exiting Idle State");
}
}

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class Patrol_State : AI_State
{
public Patrol_State(EnemyController owner) : base(owner)
{
}
public override void Enter()
{
// Debug.Log("Entering State");
// _movement.Stop();
}
public override void Update()
{
}
public override void Exit()
{
// Debug.Log("Exiting State");
}
}

View File

@ -36,20 +36,33 @@ public class Status : MonoBehaviour
public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; } } public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; } }
public float AtkSpeed { get { return _atkSpeed; } set { _atkSpeed = value; } } public float AtkSpeed { get { return _atkSpeed; } set { _atkSpeed = value; } }
private void Awake() public virtual void Init(Status status)
{ {
_level = 1; Level = status.Level;
Hp = status.Hp;
MaxHp = status.MaxHp;
Mp = status.Mp;
MaxMp = status.MaxMp;
Attack = status.Attack;
Defense = status.Defense;
MoveSpeed = status.MoveSpeed;
AtkSpeed = status.AtkSpeed;
_hp = 100;
_maxHp = 100;
_mp = 50;
_maxMp = 50;
_attack = 10;
_defense = 5;
_moveSpeed = 3.0f;
_atkSpeed = 1.0f;
} }
// private void Awake()
// {
// _level = 1;
//
// _hp = 100;
// _maxHp = 100;
// _mp = 50;
// _maxMp = 50;
//
// _attack = 10;
// _defense = 5;
//
// _moveSpeed = 3.0f;
// _atkSpeed = 1.0f;
// }
} }

View File

@ -1,16 +1,29 @@
using UnityEngine; using UnityEngine;
public class Status_Enemy: Status public class Status_Enemy: Status
{ {
[SerializeField]
protected float _scanRange; protected float _scanRange;
[SerializeField]
protected float _atkRange; protected float _atkRange;
[SerializeField]
protected float _patrolSpeed; protected float _patrolSpeed;
[SerializeField]
protected float _chaseSpeed; protected float _chaseSpeed;
public float ScanRange { get { return _scanRange; } set { _scanRange = value; } } public float ScanRange { get { return _scanRange; } set { _scanRange = value; } }
public float AttackRange { get { return _atkRange; } set { _atkRange = value; } } public float AttackRange { get { return _atkRange; } set { _atkRange = value; } }
public float PatrolSpeed { get { return _patrolSpeed; } set { _patrolSpeed = value; } } public float PatrolSpeed { get { return _patrolSpeed; } set { _patrolSpeed = value; } }
public float ChaseSpeed { get { return _chaseSpeed; } set { _chaseSpeed = value; } } public float ChaseSpeed { get { return _chaseSpeed; } set { _chaseSpeed = value; } }
public void Init(Status_Enemy data)
{
base.Init(data);
ScanRange = data.ScanRange;
AttackRange = data.AttackRange;
PatrolSpeed = data.PatrolSpeed;
ChaseSpeed = data.ChaseSpeed;
}
} }

View File

@ -14,6 +14,15 @@ public class Status_Player : Status
public int Exp { get { return _exp; } set { _exp = value; } } public int Exp { get { return _exp; } set { _exp = value; } }
public int MaxExp { get { return _maxExp; } set { _maxExp = value; } } public int MaxExp { get { return _maxExp; } set { _maxExp = value; } }
public int Gold { get { return _gold; } set { _gold = value; } } public int Gold { get { return _gold; } set { _gold = value; } }
public void Init(Status_Player data)
{
base.Init(data);
Exp = data.Exp;
MaxExp = data.MaxExp;
Gold = data.Gold;
}
private void Awake() private void Awake()
{ {

View File

@ -8,11 +8,11 @@ using EnemyType = Define.EnemyType;
//EnemyController는 몬스터의 '뇌' 역할을 하며, 상태 머신 패턴을 기반으로 동작하고, 외부에서 데이터를 주입받아 초기화되는 구조로 설계하기 //EnemyController는 몬스터의 '뇌' 역할을 하며, 상태 머신 패턴을 기반으로 동작하고, 외부에서 데이터를 주입받아 초기화되는 구조로 설계하기
public class EnemyController : MonoBehaviour public class EnemyController : MonoBehaviour
{ {
private Movement _movement; private Movement_Base _movement;
private Status _status; private Status _status;
[SerializeField] private EnemyType _type = EnemyType.Unknown; [SerializeField] private EnemyType _type = EnemyType.Unknown;
public Movement Movement => _movement; public Movement_Base Movement => _movement;
public Status Status => _status; public Status Status => _status;
public EnemyType Type => _type; public EnemyType Type => _type;
@ -33,8 +33,8 @@ public class EnemyController : MonoBehaviour
private void Awake() private void Awake()
{ {
_movement = gameObject.GetComponent<Movement_Base>();
_status = gameObject.GetOrAddComponent<Status_Enemy>(); _status = gameObject.GetComponent<Status_Enemy>();
} }
void Start() void Start()
@ -42,6 +42,13 @@ public class EnemyController : MonoBehaviour
} }
public void Init(EnemyData data)
{
_type = data.E_Type;
if(_status is Status_Enemy statusEnemy && data.status != null)
statusEnemy.Init(data.status);
}
void Update() void Update()
{ {
if (CurrentState != null) if (CurrentState != null)

View File

@ -5,10 +5,22 @@ using UnityEngine;
public class SpawnController : MonoBehaviour public class SpawnController : MonoBehaviour
{ {
private Dictionary<string, EnemyData> _enemyDatas; private Dictionary<string, EnemyData> _enemyDatas;
[SerializeField] private string _enemyPrefabPath; // 스폰할 프리팹
[SerializeField] private string _enemyDataPath; // 스폰할 프리팹
[SerializeField] private LayerMask _spawnedTargetLayers; // 스포너 Inspector에서 설정
[SerializeField] private LayerMask _spawnedObstacleLayers; // 스포너 Inspector에서 설정
int monsterCount = 0;
public string EnemyPrefabPath { get { return _enemyPrefabPath; } set { _enemyPrefabPath = value; }}
public string EnemyDataPath { get { return _enemyDataPath; } set { _enemyDataPath = value; }}
void Awake() void Awake()
{ {
_enemyDatas = _enemyDatas =
Manager.Data.LoadToDict<EnemyDataLoader, string, EnemyData>("Data/E_Test1", (enemy) => enemy.name); Manager.Data.LoadToDict<EnemyDataLoader, string, EnemyData>(EnemyDataPath, (enemy) => enemy.name);
//"Data/E_Test1"
} }
@ -17,20 +29,20 @@ public class SpawnController : MonoBehaviour
// GameObject enemy = Manager.Resource.Instantiate("Prefabs/Characters/Test_Enemy"); // GameObject enemy = Manager.Resource.Instantiate("Prefabs/Characters/Test_Enemy");
// enemy.AddComponent<EnemyController>(); // enemy.AddComponent<EnemyController>();
// enemy.transform.position = new Vector3(0,0,10); // enemy.transform.position = new Vector3(0,0,10);
int monsterCount = 5;
}
// Prefabs/Characters/{_enemyPrefab.name}
void Update()
{
float radius = 2.0f; float radius = 2.0f;
for (int i = 0; i < monsterCount; i++) if (EnemyPrefabPath == null ) return;
for (; monsterCount < 5; monsterCount++)
{ {
float angle = i * Mathf.PI * 2 / monsterCount; float angle = monsterCount * Mathf.PI * 2 / 5;
Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius + new Vector3(0, 0, 10); Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius + new Vector3(0, 0, 10);
GameObject enemy = Manager.Resource.Instantiate("Prefabs/Characters/Test_Enemy"); GameObject enemy = Manager.Resource.Instantiate(EnemyPrefabPath);
enemy.AddComponent<EnemyController>(); enemy.AddComponent<EnemyController>();
enemy.transform.position = pos; enemy.transform.position = pos;
} }
} }
void Update()
{
}
} }

View File

@ -91,7 +91,7 @@ public class InputManager: IManager
public void Clear() public void Clear()
{ {
_action.UI.Disable(); _action.Dispose();
InputAction = null; InputAction = null;
PointAction = null; PointAction = null;

View File

@ -1,3 +1,4 @@
using System;
using Animation; using Animation;
using UnityEngine; using UnityEngine;
@ -11,13 +12,32 @@ interface IManager
public class Manager : MonoBehaviour, IManager public class Manager : MonoBehaviour, IManager
{ {
static Manager s_instance; static Manager s_instance;
static Manager Instance {get { Init(); return s_instance;}}
static Manager Instance
{
InputManager _input = new InputManager(); get
DataManager _data = new DataManager(); {
PoolManager _pool = new PoolManager(); if (s_instance == null)
ResourceManager _resource = new ResourceManager(); {
GameObject obj = GameObject.Find("@Manager");
if (obj == null)
{
obj = new GameObject { name = "@Manager" };
obj.AddComponent<Manager>();
}
s_instance = obj.GetComponent<Manager>();
DontDestroyOnLoad(obj);
s_instance.Init();
}
return s_instance;
}
}
private InputManager _input;
private DataManager _data;
private PoolManager _pool;
private ResourceManager _resource;
public static InputManager Input { get { return Instance._input; } } public static InputManager Input { get { return Instance._input; } }
public static DataManager Data { get { return Instance._data; } } public static DataManager Data { get { return Instance._data; } }
@ -25,34 +45,37 @@ public class Manager : MonoBehaviour, IManager
public static ResourceManager Resource { get { return Instance._resource; } } public static ResourceManager Resource { get { return Instance._resource; } }
static void Init() private void Init()
{ {
if (s_instance == null) s_instance._input = new InputManager();
{ s_instance._data = new DataManager();
GameObject obj = GameObject.Find("@Manager"); s_instance._pool = new PoolManager();
if (obj == null) s_instance._resource = new ResourceManager();
{
obj = new GameObject { name = "@Manager" }; s_instance._input.Init();
obj.AddComponent<Manager>(); s_instance._pool.Init();
}
DontDestroyOnLoad(obj);
s_instance = obj.GetComponent<Manager>();
s_instance._input.Init();
s_instance._pool.Init();
}
} }
void Awake() void Awake()
{ {
Init();
} }
void Update() void Update()
{ {
_input.OnUpdate(); _input.OnUpdate();
} }
private void OnDestroy()
{
Clear();
}
void OnApplicationQuit()
{
Clear();
}
// 클리어는 모든 것을 초기화 하는 역할로 자주 사용 되기에 그냥 전역적으로 사용 가능하게 함 // 클리어는 모든 것을 초기화 하는 역할로 자주 사용 되기에 그냥 전역적으로 사용 가능하게 함
public static void Clear() public static void Clear()
{ {

View File

@ -1,3 +1,4 @@
using Unity.VisualScripting;
using UnityEngine; using UnityEngine;
public class GameScene : BaseScene public class GameScene : BaseScene
@ -21,6 +22,12 @@ public class GameScene : BaseScene
{ {
GameObject spawner = Manager.Resource.Instantiate("Prefabs/UI/Spawner", GameObject.Find("@Scene").transform); GameObject spawner = Manager.Resource.Instantiate("Prefabs/UI/Spawner", GameObject.Find("@Scene").transform);
spawner.AddComponent<SpawnController>(); spawner.AddComponent<SpawnController>();
spawn.EnemyPrefabPath = "Prefabs/Characters/Test_Enemy";
spawn.EnemyDataPath = "Data/E_Test1";
} }
public override void Clear() public override void Clear()

1792
Assets/_Recovery/0 (9).unity Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4c365bc24d3884571a2855363354a880
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More