From 039780aeaab2037fced9754766a6adadd1079c34 Mon Sep 17 00:00:00 2001 From: bzx <496597135@qq.com> Date: Wed, 25 Mar 2026 15:03:44 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=B0=83=E6=95=B4=E8=8B=B9?= =?UTF-8?q?=E6=9E=9C=E5=92=8C=E5=AE=9D=E5=89=91=E7=A2=B0=E6=92=9E=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=A3=80=E6=B5=8B=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E9=9A=BE=E4=BB=A5=E5=88=87=E4=B8=AD?= =?UTF-8?q?=E8=8B=B9=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/DC/场景04/苹果/苹果.controller | 4 +- .../DreamAppleEvent/PoisonApple.prefab | 367 ++++++++++++------ Assets/_SnowWhite/Prefabs/RightHand.prefab | 6 +- .../Scripts/DreamEvent/DreamSword.cs | 57 +++ Assets/_SnowWhite/Scripts/EditScene.meta | 8 + ProjectSettings/ProjectSettings.asset | 4 +- 6 files changed, 311 insertions(+), 135 deletions(-) create mode 100644 Assets/_SnowWhite/Scripts/EditScene.meta diff --git a/Assets/DC/场景04/苹果/苹果.controller b/Assets/DC/场景04/苹果/苹果.controller index 55954522..3d6e6d8a 100644 --- a/Assets/DC/场景04/苹果/苹果.controller +++ b/Assets/DC/场景04/苹果/苹果.controller @@ -102,7 +102,7 @@ AnimatorStateTransition: m_TransitionDuration: 0.25 m_TransitionOffset: 0 m_ExitTime: 0.75 - m_HasExitTime: 1 + m_HasExitTime: 0 m_HasFixedDuration: 1 m_InterruptionSource: 0 m_OrderedInterruption: 1 @@ -121,7 +121,7 @@ AnimatorStateMachine: m_Position: {x: 330, y: -10, z: 0} - serializedVersion: 1 m_State: {fileID: 795138417148494229} - m_Position: {x: 360.5, y: 77.5, z: 0} + m_Position: {x: 360, y: 120, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] diff --git a/Assets/_SnowWhite/Prefabs/DreamAppleEvent/PoisonApple.prefab b/Assets/_SnowWhite/Prefabs/DreamAppleEvent/PoisonApple.prefab index 60442692..05e3329c 100644 --- a/Assets/_SnowWhite/Prefabs/DreamAppleEvent/PoisonApple.prefab +++ b/Assets/_SnowWhite/Prefabs/DreamAppleEvent/PoisonApple.prefab @@ -1,5 +1,165 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &240552720446212448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5480612533551384373} + - component: {fileID: 4649494940272734015} + - component: {fileID: 2498986258569168513} + m_Layer: 19 + m_Name: polySurface2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5480612533551384373 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240552720446212448} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.3877787e-19, y: 0.00035235105, z: 0.00008810685} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1769161052061005815} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4649494940272734015 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240552720446212448} + m_Mesh: {fileID: -5597002278806442958, guid: 48b5c28b93d29a74f8ad8d842b3fbd34, type: 3} +--- !u!23 &2498986258569168513 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240552720446212448} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9fdb18f2110fd41826d2ff1531174d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1424969504311291213 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1769161052061005815} + - component: {fileID: 1472860284321118922} + - component: {fileID: 783843711306745008} + m_Layer: 19 + m_Name: "\u82F9\u679C" + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1769161052061005815 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424969504311291213} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5856045497962012144} + - {fileID: 5480612533551384373} + m_Father: {fileID: 7283092301746016374} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &1472860284321118922 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424969504311291213} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: cdcf4de1bbc2eb0479be69559058653d, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!135 &783843711306745008 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424969504311291213} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.1 + m_Center: {x: 0, y: -0.01, z: 0} --- !u!1 &6932340588733953491 GameObject: m_ObjectHideFlags: 0 @@ -56,144 +216,93 @@ MonoBehaviour: trailRenderer: {fileID: 0} slicePieces: [] sliceSound: 2.15 + hitPlayerSound: animator: {fileID: 1472860284321118922} witchHitEffectPrefab: {fileID: 7232357700283311001, guid: 225037bce8c7637469a3b4ddcbba576b, type: 3} effectFlightSpeed: 5 + hitPlayerDistance: 0.5 debugMode: 1 ---- !u!1001 &7921505267355375666 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 7283092301746016374} - m_Modifications: - - target: {fileID: 1830658065460616730, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_Layer - value: 19 - objectReference: {fileID: 0} - - target: {fileID: 7978208647612797266, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_Layer - value: 19 - objectReference: {fileID: 0} - - target: {fileID: 7978208647612797266, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8763566934658114296, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_ApplyRootMotion - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9090609465168196991, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_Name - value: "\u82F9\u679C" - objectReference: {fileID: 0} - - target: {fileID: 9090609465168196991, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - propertyPath: m_Layer - value: 19 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 9090609465168196991, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - insertIndex: -1 - addedObject: {fileID: 783843711306745008} - m_SourcePrefab: {fileID: 100100000, guid: b05872ec188ae9e4dbd0b8afdd10ed66, type: 3} ---- !u!1 &1424969504311291213 stripped +--- !u!1 &8397272519582778920 GameObject: - m_CorrespondingSourceObject: {fileID: 9090609465168196991, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - m_PrefabInstance: {fileID: 7921505267355375666} - m_PrefabAsset: {fileID: 0} ---- !u!135 &783843711306745008 -SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1424969504311291213} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 1 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Radius: 0.08 - m_Center: {x: 0, y: 0, z: 0} ---- !u!95 &1472860284321118922 stripped -Animator: - m_CorrespondingSourceObject: {fileID: 8763566934658114296, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - m_PrefabInstance: {fileID: 7921505267355375666} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1769161052061005815 stripped + serializedVersion: 6 + m_Component: + - component: {fileID: 5856045497962012144} + - component: {fileID: 2426116796276852701} + - component: {fileID: 2594455754341991063} + m_Layer: 19 + m_Name: polySurface1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5856045497962012144 Transform: - m_CorrespondingSourceObject: {fileID: 8458751345931268037, guid: b05872ec188ae9e4dbd0b8afdd10ed66, - type: 3} - m_PrefabInstance: {fileID: 7921505267355375666} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8397272519582778920} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.4694467e-19, y: 0.00035235105, z: 0.00008810685} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1769161052061005815} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2426116796276852701 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8397272519582778920} + m_Mesh: {fileID: 6329158148709259305, guid: 48b5c28b93d29a74f8ad8d842b3fbd34, type: 3} +--- !u!23 &2594455754341991063 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8397272519582778920} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9fdb18f2110fd41826d2ff1531174d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/_SnowWhite/Prefabs/RightHand.prefab b/Assets/_SnowWhite/Prefabs/RightHand.prefab index f239862e..9a8633a6 100644 --- a/Assets/_SnowWhite/Prefabs/RightHand.prefab +++ b/Assets/_SnowWhite/Prefabs/RightHand.prefab @@ -20149,14 +20149,14 @@ BoxCollider: m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 - m_Bits: 0 + m_Bits: 1572863 m_LayerOverridePriority: 0 m_IsTrigger: 1 m_ProvidesContacts: 1 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 0.020041598, y: 0.04906836, z: 0.4769572} - m_Center: {x: 0.00061005075, y: -0.0020857528, z: 0.31212586} + m_Size: {x: 0.035517313, y: 0.06620647, z: 0.50285363} + m_Center: {x: -0.0008472502, y: -0.0008381549, z: 0.29917765} --- !u!1 &4542635676596756454 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/_SnowWhite/Scripts/DreamEvent/DreamSword.cs b/Assets/_SnowWhite/Scripts/DreamEvent/DreamSword.cs index 261d6deb..c7460c04 100644 --- a/Assets/_SnowWhite/Scripts/DreamEvent/DreamSword.cs +++ b/Assets/_SnowWhite/Scripts/DreamEvent/DreamSword.cs @@ -713,7 +713,18 @@ public class DreamSword : MonoBehaviour // 尝试切开毒苹果(无论是否正在挥砍,只要剑碰到飞行中的苹果就切开) // 这样可以解决近距离开切时特效不播放的问题 + + // 使用三重查找策略,确保在任何层级结构下都能找到 PoisonApple 组件 PoisonApple apple = other.GetComponentInParent(); + if (apple == null) + { + apple = other.GetComponentInChildren(); + } + if (apple == null) + { + apple = other.GetComponent(); + } + if (apple != null && apple.IsFlying) { if (debugMode) @@ -723,7 +734,17 @@ public class DreamSword : MonoBehaviour } // 尝试切开幽灵(同样不做速度检测) + // 使用相同的三重查找策略 Ghost ghost = other.GetComponentInParent(); + if (ghost == null) + { + ghost = other.GetComponentInChildren(); + } + if (ghost == null) + { + ghost = other.GetComponent(); + } + if (ghost != null && (ghost.IsFlying || ghost.IsAttached)) { if (debugMode) @@ -746,6 +767,10 @@ public class DreamSword : MonoBehaviour { apple.Slice(); slicedObjects.Add(obj); + + // 立即禁用苹果的所有碰撞体,防止重复触发 + DisableAllColliders(obj.transform); + PlaySliceEffect(obj.transform.position); if (debugMode) @@ -759,12 +784,44 @@ public class DreamSword : MonoBehaviour { ghost.Slice(); slicedObjects.Add(obj); + + // 立即禁用幽灵的所有碰撞体,防止重复触发 + DisableAllColliders(obj.transform); + PlaySliceEffect(obj.transform.position); if (debugMode) Debug.Log("[DreamSword] 切开幽灵!"); } + /// + /// 禁用指定物体及其所有子物体的碰撞体 + /// + private void DisableAllColliders(Transform root) + { + if (root == null) return; + + // 禁用自身的碰撞体 + Collider collider = root.GetComponent(); + if (collider != null) + { + collider.enabled = false; + } + + // 禁用所有子物体的碰撞体 + Collider[] childColliders = root.GetComponentsInChildren(); + foreach (var childCollider in childColliders) + { + if (childCollider != null) + { + childCollider.enabled = false; + } + } + + if (debugMode) + Debug.Log($"[DreamSword] 已禁用 {root.name} 及其所有子物体的碰撞体"); + } + /// /// 播放切中特效 /// diff --git a/Assets/_SnowWhite/Scripts/EditScene.meta b/Assets/_SnowWhite/Scripts/EditScene.meta new file mode 100644 index 00000000..18030657 --- /dev/null +++ b/Assets/_SnowWhite/Scripts/EditScene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d01c0dccb1f00d24bb54f6631154d6b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index e574335d..3daab51f 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -142,7 +142,9 @@ PlayerSettings: visionOSBundleVersion: 1.0 tvOSBundleVersion: 1.0 bundleVersion: 1.0.2 - preloadedAssets: [] + preloadedAssets: + - {fileID: 11400000, guid: d0f8149c48842b4488cf6fb974cff9a2, type: 2} + - {fileID: 1814176829808956018, guid: 58f40b12bbc864f3c96c6505a9a1e1e3, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1