From a45873aee0ccd7c59342c952b0cbd072a3334901 Mon Sep 17 00:00:00 2001 From: SHOUTING_PIRATE Date: Fri, 13 Feb 2026 07:55:30 +0000 Subject: [PATCH] no message --- .../Runtime/Scripts/nodes/tags/NodeTag.cs | 1 - Assets/Resources.meta | 8 ++++ Assets/Scripts/Character.cs | 30 +++++++++++- Assets/Scripts/ClickToMove.cs | 14 +++++- Assets/Scripts/NavMeshMovementController.cs | 46 ++++++++++++++++--- Assets/Scripts/TriggerEvents.cs | 2 +- Assets/Settings/Mobile_RPAsset.asset | 18 +++++--- Assets/Settings/PC_RPAsset.asset | 26 +++++++---- ...niversalRenderPipelineGlobalSettings.asset | 16 ++++++- ProjectSettings/GraphicsSettings.asset | 9 ++-- ProjectSettings/ProjectSettings.asset | 16 +++++-- 11 files changed, 149 insertions(+), 37 deletions(-) create mode 100644 Assets/Resources.meta diff --git a/Assets/Okitoki Games/EasyTalk/Runtime/Scripts/nodes/tags/NodeTag.cs b/Assets/Okitoki Games/EasyTalk/Runtime/Scripts/nodes/tags/NodeTag.cs index 4f739c8..949d324 100644 --- a/Assets/Okitoki Games/EasyTalk/Runtime/Scripts/nodes/tags/NodeTag.cs +++ b/Assets/Okitoki Games/EasyTalk/Runtime/Scripts/nodes/tags/NodeTag.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Unity.VisualScripting.YamlDotNet.Core.Tokens; namespace EasyTalk.Nodes.Tags { diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..485214c --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5175ed1863ade5245a3cfbb17a986f04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index 7b38384..8b198ac 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -61,6 +61,9 @@ public abstract class Character : MonoBehaviour [SerializeField] private NavMeshAgent navMeshAgent; + [SerializeField] + [Tooltip("Max distance used to snap this character to the nearest NavMesh point at startup.")] + private float navMeshSnapDistance = 2f; [Header("Animation Settings")] [SerializeField] @@ -156,11 +159,36 @@ public abstract class Character : MonoBehaviour } } + protected virtual void Start() + { + EnsureNavMeshAgentReady(); + } + protected virtual void Update() { UpdateMovementAnimatorParams(); } + protected bool EnsureNavMeshAgentReady() + { + if (navMeshAgent == null || !navMeshAgent.isActiveAndEnabled) + { + return false; + } + + if (navMeshAgent.isOnNavMesh) + { + return true; + } + + if (NavMesh.SamplePosition(transform.position, out NavMeshHit hit, navMeshSnapDistance, NavMesh.AllAreas)) + { + return navMeshAgent.Warp(hit.position) && navMeshAgent.isOnNavMesh; + } + + return false; + } + public void TakeDamage(int damageToTake) { if (damageToTake < 0) damageToTake = 0; @@ -421,7 +449,7 @@ public abstract class Character : MonoBehaviour if (animator == null) return; float speed = 0f; - if (navMeshAgent != null) + if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled && EnsureNavMeshAgentReady()) { speed = navMeshAgent.velocity.magnitude; diff --git a/Assets/Scripts/ClickToMove.cs b/Assets/Scripts/ClickToMove.cs index f7e2fd3..ba0ad9e 100644 --- a/Assets/Scripts/ClickToMove.cs +++ b/Assets/Scripts/ClickToMove.cs @@ -334,7 +334,19 @@ public class ClickToMoveInputSystem : MonoBehaviour { // fallback: try to find NavMeshAgent on player root var agent = Player.current.GetComponent(); - if (agent != null) agent.SetDestination(groundHit.point); + if (agent != null && agent.isActiveAndEnabled) + { + if (agent.isOnNavMesh) + { + agent.SetDestination(groundHit.point); + } + else if (NavMesh.SamplePosition(Player.current.transform.position, out NavMeshHit hit, 2f, NavMesh.AllAreas) && + agent.Warp(hit.position) && + agent.isOnNavMesh) + { + agent.SetDestination(groundHit.point); + } + } } } } diff --git a/Assets/Scripts/NavMeshMovementController.cs b/Assets/Scripts/NavMeshMovementController.cs index 73324e5..a890450 100644 --- a/Assets/Scripts/NavMeshMovementController.cs +++ b/Assets/Scripts/NavMeshMovementController.cs @@ -10,10 +10,12 @@ public class NavMeshMovementController : MonoBehaviour [Header("Rotation")] public bool enableSmartRotation = true; public float rotationSpeed = 10f; + public float navMeshSnapDistance = 2f; NavMeshAgent agent; Vector3 lastVelocity = Vector3.zero; Vector3? lookAtTarget = null; // Optional target to face when stopped + bool navMeshSnapAttempted = false; void Awake() { @@ -24,9 +26,14 @@ public class NavMeshMovementController : MonoBehaviour } } + void Start() + { + EnsureAgentReady(); + } + void Update() { - if (agent == null) return; + if (!EnsureAgentReady()) return; // Update rotation based on movement direction if (enableSmartRotation) @@ -65,7 +72,7 @@ public class NavMeshMovementController : MonoBehaviour public void MoveTo(Vector3 worldPosition) { - if (agent == null) return; + if (!EnsureAgentReady()) return; agent.isStopped = false; agent.SetDestination(worldPosition); lookAtTarget = null; // Clear look target when starting new movement @@ -73,7 +80,7 @@ public class NavMeshMovementController : MonoBehaviour public void MoveToAndLookAt(Vector3 worldPosition, Vector3 lookTarget) { - if (agent == null) return; + if (!EnsureAgentReady()) return; agent.isStopped = false; agent.SetDestination(worldPosition); lookAtTarget = lookTarget; // Set look target for when we arrive @@ -81,7 +88,7 @@ public class NavMeshMovementController : MonoBehaviour public void Stop() { - if (agent == null) return; + if (!EnsureAgentReady()) return; agent.isStopped = true; } @@ -97,11 +104,38 @@ public class NavMeshMovementController : MonoBehaviour public bool IsAtDestination(float tolerance = 0.1f) { - if (agent == null) return true; + if (!EnsureAgentReady()) return true; return !agent.pathPending && agent.remainingDistance <= agent.stoppingDistance + tolerance; } public Vector3 GetVelocity() => lastVelocity; - public float GetSpeed() => agent != null ? agent.velocity.magnitude : 0f; + public float GetSpeed() => EnsureAgentReady() ? agent.velocity.magnitude : 0f; + + bool EnsureAgentReady() + { + if (agent == null || !agent.isActiveAndEnabled) + { + return false; + } + + if (agent.isOnNavMesh) + { + return true; + } + + if (navMeshSnapAttempted) + { + return false; + } + + navMeshSnapAttempted = true; + + if (NavMesh.SamplePosition(transform.position, out NavMeshHit hit, navMeshSnapDistance, NavMesh.AllAreas)) + { + return agent.Warp(hit.position) && agent.isOnNavMesh; + } + + return false; + } } diff --git a/Assets/Scripts/TriggerEvents.cs b/Assets/Scripts/TriggerEvents.cs index af5ee8a..928872f 100644 --- a/Assets/Scripts/TriggerEvents.cs +++ b/Assets/Scripts/TriggerEvents.cs @@ -98,7 +98,7 @@ public class TriggerEvents : MonoBehaviour // Fallback to NavMeshAgent UnityEngine.AI.NavMeshAgent agent = target.GetComponent(); - if (agent != null) + if (agent != null && agent.isActiveAndEnabled && agent.isOnNavMesh) { agent.isStopped = true; agent.ResetPath(); diff --git a/Assets/Settings/Mobile_RPAsset.asset b/Assets/Settings/Mobile_RPAsset.asset index 7ceffe7..4da2019 100644 --- a/Assets/Settings/Mobile_RPAsset.asset +++ b/Assets/Settings/Mobile_RPAsset.asset @@ -53,6 +53,7 @@ MonoBehaviour: m_AdditionalLightsShadowResolutionTierHigh: 1024 m_ReflectionProbeBlending: 1 m_ReflectionProbeBoxProjection: 1 + m_ReflectionProbeAtlas: 1 m_ShadowDistance: 50 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 @@ -78,11 +79,11 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 1 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 m_GPUResidentDrawerMode: 0 - m_UseLegacyLightmaps: 0 m_SmallMeshScreenPercentage: 0 m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 m_ShadowType: 1 @@ -100,23 +101,24 @@ MonoBehaviour: m_Keys: [] m_Values: m_PrefilteringModeMainLightShadows: 3 - m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLight: 3 m_PrefilteringModeAdditionalLightShadows: 0 m_PrefilterXRKeywords: 1 - m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeForwardPlus: 0 m_PrefilteringModeDeferredRendering: 0 m_PrefilteringModeScreenSpaceOcclusion: 0 m_PrefilterDebugKeywords: 1 m_PrefilterWriteRenderingLayers: 1 m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 m_PrefilterSSAODepthNormals: 1 m_PrefilterSSAOSourceDepthLow: 1 - m_PrefilterSSAOSourceDepthMedium: 0 + m_PrefilterSSAOSourceDepthMedium: 1 m_PrefilterSSAOSourceDepthHigh: 1 - m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOInterleaved: 1 m_PrefilterSSAOBlueNoise: 1 m_PrefilterSSAOSampleCountLow: 1 - m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountMedium: 1 m_PrefilterSSAOSampleCountHigh: 1 m_PrefilterDBufferMRT1: 1 m_PrefilterDBufferMRT2: 1 @@ -128,6 +130,10 @@ MonoBehaviour: m_PrefilterScreenCoord: 1 m_PrefilterNativeRenderPass: 1 m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 1 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 1 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 m_Textures: diff --git a/Assets/Settings/PC_RPAsset.asset b/Assets/Settings/PC_RPAsset.asset index 8b30a06..a48b885 100644 --- a/Assets/Settings/PC_RPAsset.asset +++ b/Assets/Settings/PC_RPAsset.asset @@ -53,6 +53,7 @@ MonoBehaviour: m_AdditionalLightsShadowResolutionTierHigh: 1024 m_ReflectionProbeBlending: 1 m_ReflectionProbeBoxProjection: 1 + m_ReflectionProbeAtlas: 1 m_ShadowDistance: 50 m_ShadowCascadeCount: 4 m_Cascade2Split: 0.25 @@ -78,11 +79,11 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 0 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 m_GPUResidentDrawerMode: 0 - m_UseLegacyLightmaps: 0 m_SmallMeshScreenPercentage: 0 m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 m_ShadowType: 1 @@ -100,15 +101,16 @@ MonoBehaviour: m_Keys: [] m_Values: m_PrefilteringModeMainLightShadows: 3 - m_PrefilteringModeAdditionalLight: 4 - m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilteringModeAdditionalLight: 0 + m_PrefilteringModeAdditionalLightShadows: 2 m_PrefilterXRKeywords: 1 - m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeForwardPlus: 2 m_PrefilteringModeDeferredRendering: 0 - m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilteringModeScreenSpaceOcclusion: 2 m_PrefilterDebugKeywords: 1 - m_PrefilterWriteRenderingLayers: 0 + m_PrefilterWriteRenderingLayers: 1 m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 1 m_PrefilterSSAOSourceDepthMedium: 1 @@ -120,14 +122,18 @@ MonoBehaviour: m_PrefilterSSAOSampleCountHigh: 1 m_PrefilterDBufferMRT1: 1 m_PrefilterDBufferMRT2: 1 - m_PrefilterDBufferMRT3: 0 - m_PrefilterSoftShadowsQualityLow: 0 - m_PrefilterSoftShadowsQualityMedium: 0 - m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 1 m_PrefilterNativeRenderPass: 1 m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 1 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 m_Textures: diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset index ffd013b..ac26197 100644 --- a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -63,7 +63,21 @@ MonoBehaviour: - rid: 2559183924860551175 - rid: 2559183924860551176 m_RuntimeSettings: - m_List: [] + m_List: + - rid: 6852985685364965378 + - rid: 6852985685364965379 + - rid: 6852985685364965380 + - rid: 6852985685364965381 + - rid: 6852985685364965384 + - rid: 6852985685364965385 + - rid: 6852985685364965392 + - rid: 6852985685364965394 + - rid: 8712630790384254976 + - rid: 2559183924860551169 + - rid: 2559183924860551171 + - rid: 2559183924860551172 + - rid: 2559183924860551175 + - rid: 2559183924860551176 m_AssetVersion: 8 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index aa5a1c3..a148e49 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -36,10 +36,8 @@ GraphicsSettings: - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_PreloadShadersBatchTimeLimit: -1 - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} - m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, - type: 2} + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 @@ -60,8 +58,7 @@ GraphicsSettings: m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_RenderPipelineGlobalSettingsMap: - UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, - type: 2} + UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, type: 2} m_LightsUseLinearIntensity: 1 m_LightsUseColorTemperature: 1 m_LogWhenShaderIsCompiled: 0 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index bb35311..2a09c20 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -143,7 +143,8 @@ PlayerSettings: visionOSBundleVersion: 1.0 tvOSBundleVersion: 1.0 bundleVersion: 0.1.0 - preloadedAssets: [] + preloadedAssets: + - {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 @@ -521,7 +522,10 @@ PlayerSettings: m_Height: 720 m_Kind: 1 m_SubKind: - m_BuildTargetBatching: [] + m_BuildTargetBatching: + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: [] m_BuildTargetGraphicsJobMode: [] @@ -557,6 +561,9 @@ PlayerSettings: - serializedVersion: 3 m_BuildTarget: Android m_Formats: 03000000 + - serializedVersion: 3 + m_BuildTarget: WebGL + m_Formats: 05000000 playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -824,6 +831,7 @@ PlayerSettings: webEnableSubmoduleStrippingCompatibility: 0 scriptingDefineSymbols: Standalone: TEXTMESHPRO_INSTALLED + WebGL: TEXTMESHPRO_INSTALLED additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: @@ -845,7 +853,7 @@ PlayerSettings: m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: TopDownRPG - metroPackageVersion: + metroPackageVersion: 1.0.0.0 metroCertificatePath: metroCertificatePassword: metroCertificateSubject: @@ -853,7 +861,7 @@ PlayerSettings: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: TopDownRPG wsaImages: {} - metroTileShortName: + metroTileShortName: TopDownRPG metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0