fix:调整苹果和宝剑碰撞器,添加检测机制,避免难以切中苹果

This commit is contained in:
bzx
2026-03-25 15:03:44 +08:00
parent 129b231910
commit 039780aeaa
6 changed files with 311 additions and 135 deletions

View File

@ -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: []

View File

@ -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}

View File

@ -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

View File

@ -713,7 +713,18 @@ public class DreamSword : MonoBehaviour
// 尝试切开毒苹果(无论是否正在挥砍,只要剑碰到飞行中的苹果就切开)
// 这样可以解决近距离开切时特效不播放的问题
// 使用三重查找策略,确保在任何层级结构下都能找到 PoisonApple 组件
PoisonApple apple = other.GetComponentInParent<PoisonApple>();
if (apple == null)
{
apple = other.GetComponentInChildren<PoisonApple>();
}
if (apple == null)
{
apple = other.GetComponent<PoisonApple>();
}
if (apple != null && apple.IsFlying)
{
if (debugMode)
@ -723,7 +734,17 @@ public class DreamSword : MonoBehaviour
}
// 尝试切开幽灵(同样不做速度检测)
// 使用相同的三重查找策略
Ghost ghost = other.GetComponentInParent<Ghost>();
if (ghost == null)
{
ghost = other.GetComponentInChildren<Ghost>();
}
if (ghost == null)
{
ghost = other.GetComponent<Ghost>();
}
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] 切开幽灵!");
}
/// <summary>
/// 禁用指定物体及其所有子物体的碰撞体
/// </summary>
private void DisableAllColliders(Transform root)
{
if (root == null) return;
// 禁用自身的碰撞体
Collider collider = root.GetComponent<Collider>();
if (collider != null)
{
collider.enabled = false;
}
// 禁用所有子物体的碰撞体
Collider[] childColliders = root.GetComponentsInChildren<Collider>();
foreach (var childCollider in childColliders)
{
if (childCollider != null)
{
childCollider.enabled = false;
}
}
if (debugMode)
Debug.Log($"[DreamSword] 已禁用 {root.name} 及其所有子物体的碰撞体");
}
/// <summary>
/// 播放切中特效
/// </summary>

View File

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

View File

@ -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