diff --git a/Assets/Scenes/BobberTest.unity b/Assets/Scenes/BobberTest.unity
index 377e2c1dc..190dd263e 100644
--- a/Assets/Scenes/BobberTest.unity
+++ b/Assets/Scenes/BobberTest.unity
@@ -714,7 +714,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 0
+ m_IsActive: 1
--- !u!64 &668361901
MeshCollider:
m_ObjectHideFlags: 0
@@ -839,6 +839,51 @@ Transform:
m_Children: []
m_Father: {fileID: 1676957643}
m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
+--- !u!1 &820800908
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 820800910}
+ - component: {fileID: 820800909}
+ m_Layer: 0
+ m_Name: WaterProvider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &820800909
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 820800908}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 06d107cece7c4cbb9825557923be567f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::BuoyancyWaterProvider
+ waterLevel: 0
+--- !u!4 &820800910
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 820800908}
+ 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: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &844322797
GameObject:
m_ObjectHideFlags: 0
@@ -1005,7 +1050,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
- m_IsActive: 1
+ m_IsActive: 0
--- !u!154 &909052970
TerrainCollider:
m_ObjectHideFlags: 0
@@ -2970,7 +3015,6 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4753644045374711}
- - component: {fileID: 136773376048481711}
m_Layer: 0
m_Name: _body
m_TagString: Untagged
@@ -3005,7 +3049,6 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4250003575048753}
- - component: {fileID: 136450086866505322}
m_Layer: 0
m_Name: _stick
m_TagString: Untagged
@@ -3200,52 +3243,37 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1938556731102199}
m_Mesh: {fileID: 4300000, guid: 77d4b5d6e9e84794383ac9531cb04cae, type: 2}
---- !u!136 &136450086866505322
-CapsuleCollider:
+--- !u!4 &41383484053585886
+Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1956873481719066}
- m_Material: {fileID: 0}
- m_IncludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ExcludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_LayerOverridePriority: 0
- m_IsTrigger: 0
- m_ProvidesContacts: 0
- m_Enabled: 1
+ m_GameObject: {fileID: 6280423383106253057}
serializedVersion: 2
- m_Radius: 0.001
- m_Height: 0.06766828
- m_Direction: 1
- m_Center: {x: 0, y: 0, z: 0}
---- !u!136 &136773376048481711
-CapsuleCollider:
+ 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: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
+--- !u!1 &167656693566734254
+GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1893892402371954}
- m_Material: {fileID: 0}
- m_IncludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ExcludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_LayerOverridePriority: 0
- m_IsTrigger: 0
- m_ProvidesContacts: 0
- m_Enabled: 1
- serializedVersion: 2
- m_Radius: 0.0034
- m_Height: 0.04
- m_Direction: 1
- m_Center: {x: 0, y: 0, z: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9066712976035742038}
+ m_Layer: 0
+ m_Name: _topConnector
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!114 &269011904976577378
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3276,6 +3304,21 @@ MonoBehaviour:
RefIds:
- rid: -2
type: {class: , ns: , asm: }
+--- !u!4 &269017554130809855
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8188637675592362683}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.0415, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!114 &309487077947173374
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3293,6 +3336,71 @@ MonoBehaviour:
topConnector: {fileID: 4466248854207531}
bottomConnector: {fileID: 4064788320456926}
waterline: {fileID: 4902566405131541}
+--- !u!4 &389927712696538647
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8129510738604895356}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.4698567, y: 0, z: 0, w: 0.8827427}
+ m_LocalPosition: {x: 1, y: 1.08, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 584816677121546027}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 56.05, y: 0, z: 0}
+--- !u!23 &398636765974200556
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6280423383106253057}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 7881e4598f2626c4a8ffb3e956070a4b, type: 2}
+ - {fileID: 2100000, guid: 940b6068f71807340a836245c4bbcb7e, 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: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
--- !u!4 &510414306652611078
Transform:
m_ObjectHideFlags: 0
@@ -3308,6 +3416,42 @@ Transform:
m_Children: []
m_Father: {fileID: 7195797433903099932}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &530731981639178553
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9204150256481453776}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.033460047, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &584816677121546027
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4021168644610805053}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.04, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 41383484053585886}
+ - {fileID: 9066712976035742038}
+ - {fileID: 5901816832231670898}
+ - {fileID: 869141368029001109}
+ - {fileID: 269017554130809855}
+ - {fileID: 530731981639178553}
+ m_Father: {fileID: 389927712696538647}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!223 &629080170150445082
Canvas:
m_ObjectHideFlags: 0
@@ -3401,6 +3545,21 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
+--- !u!4 &869141368029001109
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2834281524933038866}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.0295, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!1 &1065788238234039155
GameObject:
m_ObjectHideFlags: 0
@@ -3513,10 +3672,25 @@ RectTransform:
m_Father: {fileID: 2256579932936496278}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
+ m_AnchorMax: {x: 0.2, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
+--- !u!4 &1159196036679945669
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8040762699284656957}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.055, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!4 &1291580890895649287
Transform:
m_ObjectHideFlags: 0
@@ -3549,6 +3723,22 @@ Transform:
- {fileID: 1345161124}
m_Father: {fileID: 3347216226615520232}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1332661049252743747
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7681078425349166506}
+ m_Layer: 0
+ m_Name: _stick
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!114 &1471384148769986650
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3652,6 +3842,49 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
+--- !u!54 &1840670279898142899
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2095571565886628079}
+ serializedVersion: 5
+ m_Mass: 0.1
+ m_LinearDamping: 0.1
+ m_AngularDamping: 0.1
+ m_CenterOfMass: {x: 0, y: 0.03, z: 0}
+ m_InertiaTensor: {x: 0.001, y: 0.001, z: 0.001}
+ m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ImplicitCom: 0
+ m_ImplicitTensor: 1
+ m_UseGravity: 0
+ m_IsKinematic: 0
+ m_Interpolate: 1
+ m_Constraints: 0
+ m_CollisionDetection: 1
+--- !u!1 &2046542269883901480
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7961972470609608556}
+ m_Layer: 0
+ m_Name: _waterline
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!1001 &2066873170891308496
PrefabInstance:
m_ObjectHideFlags: 0
@@ -3735,6 +3968,56 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
+--- !u!1 &2095571565886628079
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7542518911993633412}
+ - component: {fileID: 1840670279898142899}
+ - component: {fileID: 2343505271588303845}
+ - component: {fileID: 7542518911993633413}
+ m_Layer: 16
+ m_Name: Float (5)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!33 &2096859472366292387
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4246241372715793810}
+ m_Mesh: {fileID: 4300000, guid: 77d4b5d6e9e84794383ac9531cb04cae, type: 2}
+--- !u!136 &2238779523277448163
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9204150256481453776}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 2
+ m_Radius: 0.001
+ m_Height: 0.06766828
+ m_Direction: 1
+ m_Center: {x: 0, y: 0, z: 0}
--- !u!224 &2256579932936496278
RectTransform:
m_ObjectHideFlags: 0
@@ -3763,6 +4046,29 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6260237052217873599}
m_CullTransparentMesh: 1
+--- !u!136 &2343505271588303845
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2095571565886628079}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.004
+ m_Height: 0.025
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.04, z: 0}
--- !u!114 &2358608343594615569
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -3795,6 +4101,22 @@ Transform:
m_Children: []
m_Father: {fileID: 3347216226615520232}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2466777408151505905
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4333116976202729697}
+ m_Layer: 0
+ m_Name: _bottomConnector
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!114 &2531380344179187550
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -4154,7 +4476,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!1 &2575899344989503316
GameObject:
m_ObjectHideFlags: 0
@@ -4252,6 +4574,39 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2834281524933038866
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 869141368029001109}
+ m_Layer: 0
+ m_Name: _body
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &2958907248619857825
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6488326274017591726}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3e885da772834bb289c2368be2f6eb5b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ body: {fileID: 7046702632142338310}
+ stick: {fileID: 7681078425349166506}
+ topConnector: {fileID: 1159196036679945669}
+ bottomConnector: {fileID: 4333116976202729697}
+ waterline: {fileID: 7961972470609608556}
--- !u!1 &3062767698477047043
GameObject:
m_ObjectHideFlags: 0
@@ -4827,6 +5182,24 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c26fe2b4fef6c484089497b549dd6b04, type: 3}
+--- !u!1 &4021168644610805053
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 584816677121546027}
+ - component: {fileID: 4959874663812492082}
+ - component: {fileID: 4959874663812492083}
+ m_Layer: 0
+ m_Name: bob_25002
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!1 &4066733549998169382
GameObject:
m_ObjectHideFlags: 0
@@ -4859,8 +5232,8 @@ RectTransform:
m_Children: []
m_Father: {fileID: 4262266657851529727}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
+ m_AnchorMin: {x: 0.2, y: 0}
+ m_AnchorMax: {x: 0.2, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
@@ -4881,6 +5254,24 @@ MonoBehaviour:
_Material: {fileID: 0}
_BelowSurfaceMaterial: {fileID: 0}
_VolumeMaterial: {fileID: 0}
+--- !u!1 &4246241372715793810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7878523915952501581}
+ - component: {fileID: 2096859472366292387}
+ - component: {fileID: 7515693914261408895}
+ m_Layer: 0
+ m_Name: _mesh
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!224 &4262266657851529727
RectTransform:
m_ObjectHideFlags: 0
@@ -4909,6 +5300,21 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8737220161078195139}
m_CullTransparentMesh: 1
+--- !u!4 &4333116976202729697
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2466777408151505905}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.00002, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!222 &4334316862751883177
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -5045,6 +5451,30 @@ Transform:
- {fileID: 3430072966807144692}
m_Father: {fileID: 5388330205210097294}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4772159711372274701
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8129510738604895356}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6f273ba33ebe49cd8b31b92db8288a90, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::Buoyancy
+ _water: {fileID: 2531380344179187550}
+ includeDeformation: 1
+ sphereRadiusApproximation: 0.1
+ waveForceMultiplier: 0.01
+ currentSpeedMultiplier: 0.01
+ dragMultiplier: 1
+ defaultRigidbodyDrag: 5
+ underwaterRigidbodyAngularDrag: 5
+ overwaterRigidbodyAngularDrag: 1
+ surfaceTensionDamping: 10
+ applyForceWithRandomOffset: 0
+ drawDebug: 1
--- !u!1001 &4903999546382904164
PrefabInstance:
m_ObjectHideFlags: 0
@@ -5102,6 +5532,46 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5e01cffb9e8324147affb8e08fd5ed13, type: 3}
+--- !u!114 &4959874663812492082
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4021168644610805053}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3e885da772834bb289c2368be2f6eb5b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ body: {fileID: 869141368029001109}
+ stick: {fileID: 530731981639178553}
+ topConnector: {fileID: 9066712976035742038}
+ bottomConnector: {fileID: 5901816832231670898}
+ waterline: {fileID: 269017554130809855}
+--- !u!136 &4959874663812492083
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4021168644610805053}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.003
+ m_Height: 0.04
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.05, z: 0}
--- !u!224 &5096569463460343103
RectTransform:
m_ObjectHideFlags: 0
@@ -5187,6 +5657,22 @@ MonoBehaviour:
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
+--- !u!1 &5372866695071686529
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7046702632142338310}
+ m_Layer: 0
+ m_Name: _body
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!114 &5379033684082313598
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5382,6 +5868,22 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
+--- !u!1 &5764296597173438306
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5901816832231670898}
+ m_Layer: 0
+ m_Name: _bottomConnector
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!33 &5777952278598528620
MeshFilter:
m_ObjectHideFlags: 0
@@ -5432,6 +5934,21 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065788238234039155}
m_CullTransparentMesh: 1
+--- !u!4 &5901816832231670898
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5764296597173438306}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.00002, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!114 &6135364979465448005
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5498,6 +6015,24 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
+--- !u!1 &6280423383106253057
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 41383484053585886}
+ - component: {fileID: 8132567827201524016}
+ - component: {fileID: 398636765974200556}
+ m_Layer: 0
+ m_Name: _mesh
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!1 &6374285101834327718
GameObject:
m_ObjectHideFlags: 0
@@ -5588,6 +6123,23 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 25}
m_Pivot: {x: 0.5, y: 0.25}
+--- !u!1 &6488326274017591726
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7338767763573152696}
+ - component: {fileID: 2958907248619857825}
+ m_Layer: 0
+ m_Name: bob_25002
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!1 &6871473421737383571
GameObject:
m_ObjectHideFlags: 0
@@ -5623,6 +6175,21 @@ MonoBehaviour:
_IsLocal: 0
_Velocity: {x: -5, y: 0, z: 0}
_AngularVelocity: {x: 0, y: 0, z: 0}
+--- !u!4 &7046702632142338310
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5372866695071686529}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.0295, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!1 &7126023296560485276
GameObject:
m_ObjectHideFlags: 0
@@ -5663,6 +6230,27 @@ Transform:
- {fileID: 1529912228}
m_Father: {fileID: 5388330205210097294}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &7338767763573152696
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6488326274017591726}
+ 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: 7878523915952501581}
+ - {fileID: 1159196036679945669}
+ - {fileID: 4333116976202729697}
+ - {fileID: 7046702632142338310}
+ - {fileID: 7961972470609608556}
+ - {fileID: 7681078425349166506}
+ m_Father: {fileID: 7542518911993633412}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!1001 &7347139586361227608
PrefabInstance:
m_ObjectHideFlags: 0
@@ -5752,6 +6340,95 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6871473421737383571}
m_CullTransparentMesh: 1
+--- !u!23 &7515693914261408895
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4246241372715793810}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 7881e4598f2626c4a8ffb3e956070a4b, type: 2}
+ - {fileID: 2100000, guid: 940b6068f71807340a836245c4bbcb7e, 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: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!4 &7542518911993633412
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2095571565886628079}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 1, y: 1.08, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 7338767763573152696}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!114 &7542518911993633413
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2095571565886628079}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6f273ba33ebe49cd8b31b92db8288a90, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::Buoyancy
+ _water: {fileID: 2531380344179187550}
+ includeDeformation: 1
+ sphereRadiusApproximation: 0.25
+ waveForceMultiplier: 1
+ currentSpeedMultiplier: 1
+ dragMultiplier: 1
+ defaultRigidbodyDrag: 0.1
+ underwaterRigidbodyAngularDrag: 1
+ overwaterRigidbodyAngularDrag: 0.05
+ surfaceTensionDamping: 10
+ applyForceWithRandomOffset: 0
+ drawDebug: 0
--- !u!114 &7647511515837834160
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5766,79 +6443,67 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::NBF.LureController
rBody: {fileID: 8093361435069273870}
joint: {fileID: 8264839114692736908}
---- !u!1001 &7909769884836788113
-PrefabInstance:
+--- !u!4 &7681078425349166506
+Transform:
m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1332661049252743747}
serializedVersion: 2
- m_Modification:
- serializedVersion: 3
- m_TransformParent: {fileID: 0}
- m_Modifications:
- - target: {fileID: 1840670280526439345, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_UseGravity
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 2095571566598544365, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_Name
- value: Float (4)
- objectReference: {fileID: 0}
- - target: {fileID: 2095571566598544365, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_IsActive
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 3458544836024540060, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: _water
- value:
- objectReference: {fileID: 2531380344179187550}
- - target: {fileID: 3458544836024540060, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: drawDebug
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalPosition.x
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalPosition.y
- value: 1.08
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalPosition.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalRotation.w
- value: 0.8827427
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalRotation.x
- value: 0.4698567
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 56.05
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 7542518912372236678, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_RemovedGameObjects: []
- m_AddedGameObjects: []
- m_AddedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: 68d702ab1637e634e9217435fac83d3c, type: 3}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.033460047, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &7878523915952501581
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4246241372715793810}
+ 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: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
+--- !u!4 &7961972470609608556
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2046542269883901480}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.0415, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7338767763573152696}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
+--- !u!1 &8040762699284656957
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1159196036679945669}
+ m_Layer: 0
+ m_Name: _topConnector
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!54 &8093361435069273870
Rigidbody:
m_ObjectHideFlags: 0
@@ -5875,9 +6540,9 @@ Rigidbody:
m_GameObject: {fileID: 8112599368562234729}
serializedVersion: 5
m_Mass: 0.1
- m_LinearDamping: 5
+ m_LinearDamping: 0.1
m_AngularDamping: 0.1
- m_CenterOfMass: {x: 0, y: 0, z: 0}
+ m_CenterOfMass: {x: 0, y: 0.03, z: 0}
m_InertiaTensor: {x: 0.001, y: 0.001, z: 0.001}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
@@ -5886,13 +6551,13 @@ Rigidbody:
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
- m_ImplicitCom: 1
- m_ImplicitTensor: 0
- m_UseGravity: 0
+ m_ImplicitCom: 0
+ m_ImplicitTensor: 1
+ m_UseGravity: 1
m_IsKinematic: 0
- m_Interpolate: 0
+ m_Interpolate: 1
m_Constraints: 0
- m_CollisionDetection: 2
+ m_CollisionDetection: 1
--- !u!4 &8107363338062326325
Transform:
m_ObjectHideFlags: 0
@@ -5916,14 +6581,14 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8112599368562234729}
serializedVersion: 2
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: -1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4046714554611455}
m_Father: {fileID: 8114378222086924161}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!224 &8110689384494340643
RectTransform:
m_ObjectHideFlags: 0
@@ -5991,6 +6656,7 @@ GameObject:
m_Component:
- component: {fileID: 8107394097429219735}
- component: {fileID: 8094040829892155629}
+ - component: {fileID: 8264424693587136968}
- component: {fileID: 8264424693587136966}
- component: {fileID: 6135364979465448005}
- component: {fileID: 8264424693587136967}
@@ -6120,6 +6786,32 @@ Transform:
m_Children: []
m_Father: {fileID: 8114378222086924161}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8129510738604895356
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 389927712696538647}
+ - component: {fileID: 8380770180143436832}
+ - component: {fileID: 4772159711372274701}
+ m_Layer: 16
+ m_Name: Float (4)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!33 &8132567827201524016
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6280423383106253057}
+ m_Mesh: {fileID: 4300000, guid: 77d4b5d6e9e84794383ac9531cb04cae, type: 2}
--- !u!114 &8143692206562876326
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -6359,6 +7051,22 @@ SphereCollider:
serializedVersion: 3
m_Radius: 0.003
m_Center: {x: 0, y: -0.0015, z: 0}
+--- !u!1 &8188637675592362683
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 269017554130809855}
+ m_Layer: 0
+ m_Name: _waterline
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!224 &8263689906767965056
RectTransform:
m_ObjectHideFlags: 0
@@ -6496,18 +7204,41 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6f273ba33ebe49cd8b31b92db8288a90, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Buoyancy
- _water: {fileID: 0}
+ _water: {fileID: 2531380344179187550}
includeDeformation: 1
- sphereRadiusApproximation: 0.1
- waveForceMultiplier: 0.01
- currentSpeedMultiplier: 0.01
+ sphereRadiusApproximation: 0.25
+ waveForceMultiplier: 1
+ currentSpeedMultiplier: 1
dragMultiplier: 1
- defaultRigidbodyDrag: 5
- underwaterRigidbodyAngularDrag: 5
- overwaterRigidbodyAngularDrag: 1
+ defaultRigidbodyDrag: 0.1
+ underwaterRigidbodyAngularDrag: 1
+ overwaterRigidbodyAngularDrag: 0.05
surfaceTensionDamping: 10
applyForceWithRandomOffset: 0
drawDebug: 1
+--- !u!136 &8264424693587136968
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8112599368562234729}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.004
+ m_Height: 0.025
+ m_Direction: 1
+ m_Center: {x: 0, y: 0.04, z: 0}
--- !u!153 &8264839114692736908
ConfigurableJoint:
m_ObjectHideFlags: 0
@@ -6610,6 +7341,33 @@ ConfigurableJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
+--- !u!54 &8380770180143436832
+Rigidbody:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8129510738604895356}
+ serializedVersion: 5
+ m_Mass: 0.1
+ m_LinearDamping: 5
+ m_AngularDamping: 0.1
+ m_CenterOfMass: {x: 0, y: 0, z: 0}
+ m_InertiaTensor: {x: 0.001, y: 0.001, z: 0.001}
+ m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ImplicitCom: 1
+ m_ImplicitTensor: 0
+ m_UseGravity: 0
+ m_IsKinematic: 0
+ m_Interpolate: 0
+ m_Constraints: 0
+ m_CollisionDetection: 2
--- !u!120 &8514482975972367959
LineRenderer:
serializedVersion: 2
@@ -6992,6 +7750,21 @@ LineRenderer:
m_UseWorldSpace: 1
m_Loop: 0
m_ApplyActiveColorSpace: 1
+--- !u!4 &9066712976035742038
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 167656693566734254}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.055, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 584816677121546027}
+ m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!1 &9157164589531290079
GameObject:
m_ObjectHideFlags: 0
@@ -7032,6 +7805,23 @@ MonoBehaviour:
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
+--- !u!1 &9204150256481453776
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 530731981639178553}
+ - component: {fileID: 2238779523277448163}
+ m_Layer: 0
+ m_Name: _stick
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -7044,5 +7834,7 @@ SceneRoots:
- {fileID: 909052972}
- {fileID: 668361904}
- {fileID: 154764977}
- - {fileID: 7909769884836788113}
+ - {fileID: 389927712696538647}
+ - {fileID: 7542518911993633412}
- {fileID: 5388330205210097294}
+ - {fileID: 820800910}
diff --git a/Assets/Scripts/Test/BuoyancyBody.cs b/Assets/Scripts/Test/BuoyancyBody.cs
index 7de55839a..990222bb3 100644
--- a/Assets/Scripts/Test/BuoyancyBody.cs
+++ b/Assets/Scripts/Test/BuoyancyBody.cs
@@ -2,17 +2,7 @@
using System.Collections.Generic;
using UnityEngine;
-public interface IWaterProvider
-{
- /// 返回该世界坐标下的水面高度
- float GetWaterHeight(Vector3 worldPos);
- /// 可选:水面法线(没有就返回 Vector3.up)
- Vector3 GetWaterNormal(Vector3 worldPos);
-
- /// 可选:水流速度(没有就返回 Vector3.zero)
- Vector3 GetWaterVelocity(Vector3 worldPos);
-}
///
/// 多点采样浮力:考虑形状(采样点分布)、重心(Rigidbody.centerOfMass)、扭矩(在点上施力)。
diff --git a/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs b/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs
new file mode 100644
index 000000000..fb75698f1
--- /dev/null
+++ b/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs
@@ -0,0 +1,224 @@
+using UnityEngine;
+
+public interface IWaterProvider
+{
+ float GetWaterHeight(Vector3 worldPos);
+ Vector3 GetWaterNormal(Vector3 worldPos);
+ Vector3 GetWaterVelocity(Vector3 worldPos);
+}
+
+///
+/// 稳定优先的浮力(只支持 CapsuleCollider / SphereCollider)
+/// - 竖直方向:目标吃水深度 + PD 控制(稳定,不抖、不弹飞)
+/// - 姿态:Righting Torque 扶正(受 Rigidbody.centerOfMass 影响)
+/// - 入水比例:带平滑(避免水面附近开关抖动)
+///
+[DisallowMultipleComponent]
+[RequireComponent(typeof(Rigidbody))]
+public class BuoyancyCapsuleSphere : MonoBehaviour
+{
+ [Header("Collider (choose one)")]
+ public CapsuleCollider capsule;
+ public SphereCollider sphere;
+
+ [Header("Water")]
+ public MonoBehaviour waterProviderBehaviour; // 可选
+ private IWaterProvider waterProvider;
+
+ [Tooltip("没有 provider 时的水面高度")]
+ public float waterLevel = 0f;
+
+ [Header("Density -> Draft")]
+ [Tooltip("水密度 kg/m^3(淡水约1000)")]
+ public float waterDensity = 1000f;
+
+ [Tooltip("物体等效密度 kg/m^3。越小越浮。浮漂可 80~400 之间调")]
+ public float objectDensity = 250f;
+
+ [Tooltip("额外浮力比例(手感调整)。1=按密度算")]
+ public float buoyancyScale = 1f;
+
+ [Header("Vertical PD (Stability key)")]
+ [Tooltip("竖直弹簧强度(越大越“顶住”目标吃水)")]
+ public float verticalKp = 35f;
+
+ [Tooltip("竖直阻尼(越大越不弹、不抖)")]
+ public float verticalKd = 12f;
+
+ [Tooltip("最大向上加速度 m/s^2(防止从高处落下入水被顶飞)")]
+ public float maxUpAccel = 25f;
+
+ [Tooltip("最大向下加速度 m/s^2(防止强行拉下去造成抖动)")]
+ public float maxDownAccel = 10f;
+
+ [Header("Submergence smoothing")]
+ [Tooltip("入水比例变化速度(1/s)。越大越快响应,越小越稳")]
+ public float submergenceSpeed = 8f;
+
+ [Tooltip("水面外的缓冲(m),让浮力更平滑接管")]
+ public float surfaceMargin = 0.01f;
+
+ [Header("Righting (Rotation)")]
+ [Tooltip("扶正强度(把 transform.up 拉向水面法线/世界上)")]
+ public float rightingKp = 8f;
+
+ [Tooltip("扶正阻尼(抑制旋转抖动)")]
+ public float rightingKd = 3f;
+
+ [Header("Water drag (optional but helpful)")]
+ [Tooltip("入水时额外线阻尼(通过 rb.drag 混合)")]
+ public float extraLinearDragInWater = 2.5f;
+
+ [Tooltip("入水时额外角阻尼(通过 rb.angularDrag 混合)")]
+ public float extraAngularDragInWater = 2.0f;
+
+ [Header("Center of Mass")]
+ [Tooltip("本地重心偏移:例如 (0,-0.02,0) 让底部更重、更容易站漂")]
+ public Vector3 centerOfMassOffset = Vector3.zero;
+
+ private Rigidbody rb;
+ private float baseDrag, baseAngularDrag;
+
+ // 关键:入水比例必须有“记忆”(滤波),否则水面边界必抖
+ private float subFiltered = 0f;
+
+ void Reset()
+ {
+ rb = GetComponent();
+ rb.useGravity = true;
+ rb.interpolation = RigidbodyInterpolation.Interpolate;
+ rb.collisionDetectionMode = CollisionDetectionMode.Continuous;
+
+ capsule = GetComponent();
+ sphere = GetComponent();
+ }
+
+ void Awake()
+ {
+ rb = GetComponent();
+ rb.centerOfMass = centerOfMassOffset;
+
+ baseDrag = rb.linearDamping;
+ baseAngularDrag = rb.angularDamping;
+
+ waterProvider = waterProviderBehaviour as IWaterProvider;
+
+ // 只允许一个
+ if (capsule != null && sphere != null)
+ sphere = null;
+ }
+
+ void OnValidate()
+ {
+ objectDensity = Mathf.Max(1e-3f, objectDensity);
+ waterDensity = Mathf.Max(1e-3f, waterDensity);
+ submergenceSpeed = Mathf.Max(0.1f, submergenceSpeed);
+ surfaceMargin = Mathf.Max(0f, surfaceMargin);
+ maxUpAccel = Mathf.Max(0f, maxUpAccel);
+ maxDownAccel = Mathf.Max(0f, maxDownAccel);
+ }
+
+ void FixedUpdate()
+ {
+ if (!capsule && !sphere) return;
+
+ waterProvider = waterProviderBehaviour as IWaterProvider;
+
+ // 取“浮体中心点”作为控制点(稳定,不戳点)
+ Vector3 centerWorld;
+ float shapeHeight; // 近似“高度”(sphere=直径,capsule=高度)
+ GetCenterAndHeight(out centerWorld, out shapeHeight);
+
+ // 水面信息
+ float waterH = (waterProvider != null) ? waterProvider.GetWaterHeight(centerWorld) : waterLevel;
+ Vector3 waterN = (waterProvider != null) ? waterProvider.GetWaterNormal(centerWorld) : Vector3.up;
+ if (waterN.sqrMagnitude < 1e-6f) waterN = Vector3.up;
+ waterN.Normalize();
+
+ // 当前中心“浸没深度”(>0 表示中心在水下)
+ float centerDepth = waterH - centerWorld.y;
+
+ // 近似入水比例:centerDepth = -H/2 -> 0; centerDepth = +H/2 -> 1
+ float rawSub = Mathf.Clamp01((centerDepth + (shapeHeight * 0.5f) + surfaceMargin) / (shapeHeight + 2f * surfaceMargin));
+
+ // 入水比例滤波(非常关键)
+ float dt = Time.fixedDeltaTime;
+ subFiltered = Mathf.MoveTowards(subFiltered, rawSub, submergenceSpeed * dt);
+
+ // 混合拖拽(让水中更稳)
+ rb.linearDamping = Mathf.Lerp(baseDrag, baseDrag + extraLinearDragInWater, subFiltered);
+ rb.angularDamping = Mathf.Lerp(baseAngularDrag, baseAngularDrag + extraAngularDragInWater, subFiltered);
+
+ if (subFiltered <= 1e-4f)
+ return; // 基本没入水,不做任何浮力/扶正
+
+ // 目标吃水比例:理想静态平衡 ≈ objectDensity / waterDensity(<1 才会浮)
+ float desiredSub = Mathf.Clamp01((objectDensity / waterDensity) * buoyancyScale);
+
+ // 把 desiredSub 转成目标中心深度
+ // desiredSub=0 -> centerDepthTarget = -H/2(完全出水)
+ // desiredSub=1 -> centerDepthTarget = +H/2(完全入水)
+ float centerDepthTarget = desiredSub * shapeHeight - shapeHeight * 0.5f;
+
+ // 竖直 PD:只沿“世界上/重力反方向”控制,最稳
+ Vector3 up = (-Physics.gravity).sqrMagnitude > 1e-6f ? (-Physics.gravity).normalized : Vector3.up;
+ float vUp = Vector3.Dot(rb.linearVelocity, up);
+
+ float error = centerDepth - centerDepthTarget; // 深了为正 -> 需要向上推
+ float accelUp = (-verticalKp * error) - (verticalKd * vUp);
+
+ // 限制上下加速度,避免顶飞或强拉抖动
+ accelUp = Mathf.Clamp(accelUp, -maxDownAccel, maxUpAccel);
+
+ // 随入水比例渐入(避免水面边界突然接管)
+ accelUp *= subFiltered;
+
+ // 施加竖直加速度(Acceleration 不受质量影响,更稳定)
+ rb.AddForce(up * accelUp, ForceMode.Acceleration);
+
+ // 扶正力矩:把物体 up 拉向 waterN(平静水就是 Vector3.up)
+ // 注意:这个扶正与重心偏移一起工作,会形成“站漂/躺漂”的稳定姿态
+ Vector3 currentUp = transform.up;
+ Vector3 axis = Vector3.Cross(currentUp, waterN);
+
+ // 小角度近似:axis 的大小约等于 sin(theta)
+ // 扶正加速度型扭矩(同样用 Acceleration,减少质量/惯量差带来的抖动)
+ Vector3 angVel = rb.angularVelocity;
+ Vector3 torqueAccel = axis * rightingKp - angVel * rightingKd;
+
+ torqueAccel *= subFiltered;
+
+ rb.AddTorque(torqueAccel, ForceMode.Acceleration);
+ }
+
+ private void GetCenterAndHeight(out Vector3 centerWorld, out float heightWorld)
+ {
+ if (sphere)
+ {
+ // sphere:center + 半径*缩放(近似取最大缩放)
+ Transform t = sphere.transform;
+ centerWorld = t.TransformPoint(sphere.center);
+
+ Vector3 s = t.lossyScale;
+ float r = sphere.radius * Mathf.Max(Mathf.Abs(s.x), Mathf.Abs(s.y), Mathf.Abs(s.z));
+ heightWorld = Mathf.Max(1e-6f, r * 2f);
+ return;
+ }
+
+ // capsule
+ Transform ct = capsule.transform;
+ centerWorld = ct.TransformPoint(capsule.center);
+
+ Vector3 ls = ct.lossyScale;
+ float sx = Mathf.Abs(ls.x), sy = Mathf.Abs(ls.y), sz = Mathf.Abs(ls.z);
+
+ float heightScale = capsule.direction switch
+ {
+ 0 => sx,
+ 1 => sy,
+ _ => sz,
+ };
+
+ heightWorld = Mathf.Max(1e-6f, capsule.height * heightScale);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs.meta b/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs.meta
new file mode 100644
index 000000000..b45fa287e
--- /dev/null
+++ b/Assets/Scripts/Test/BuoyancyCapsuleSphere.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bad586cd447d4271b97ce1cf1c81897a
+timeCreated: 1772460028
\ No newline at end of file
diff --git a/Assets/Scripts/Test/CapsuleBuoyancy.cs b/Assets/Scripts/Test/CapsuleBuoyancy.cs
new file mode 100644
index 000000000..3fe7fdb32
--- /dev/null
+++ b/Assets/Scripts/Test/CapsuleBuoyancy.cs
@@ -0,0 +1,95 @@
+using UnityEngine;
+
+[RequireComponent(typeof(Rigidbody))]
+[RequireComponent(typeof(CapsuleCollider))]
+public class CapsuleBuoyancy : MonoBehaviour
+{
+ [Header("Water Settings")]
+ public float waterHeight = 0f; // 水面高度
+ public float waterDensity = 1000f; // 水密度
+
+ [Header("Buoyancy Settings")]
+ public int samplePoints = 8; // 采样点数量
+ public float buoyancyMultiplier = 1.0f; // 浮力强度调节
+ public float waterDrag = 1.5f; // 水阻力
+ public float waterAngularDrag = 1.5f; // 水角阻力
+
+ private Rigidbody rb;
+ private CapsuleCollider capsule;
+
+ private float capsuleVolume;
+ private float gravity;
+
+ void Start()
+ {
+ rb = GetComponent();
+ capsule = GetComponent();
+
+ gravity = Physics.gravity.magnitude;
+
+ CalculateCapsuleVolume();
+ }
+
+ void FixedUpdate()
+ {
+ ApplyBuoyancy();
+ }
+
+ void CalculateCapsuleVolume()
+ {
+ float radius = capsule.radius * Mathf.Max(transform.localScale.x, transform.localScale.z);
+ float height = Mathf.Max(0, capsule.height * transform.localScale.y - 2f * radius);
+
+ float cylinderVolume = Mathf.PI * radius * radius * height;
+ float sphereVolume = (4f / 3f) * Mathf.PI * radius * radius * radius;
+
+ capsuleVolume = cylinderVolume + sphereVolume;
+ }
+
+ void ApplyBuoyancy()
+ {
+ float submergedRatioTotal = 0f;
+
+ for (int i = 0; i < samplePoints; i++)
+ {
+ float t = (float)i / (samplePoints - 1);
+ Vector3 localPoint = Vector3.up * Mathf.Lerp(
+ -capsule.height * 0.5f + capsule.radius,
+ capsule.height * 0.5f - capsule.radius,
+ t);
+
+ Vector3 worldPoint = transform.TransformPoint(localPoint);
+
+ float depth = waterHeight - worldPoint.y;
+
+ if (depth > 0f)
+ {
+ float normalizedDepth = Mathf.Clamp01(depth / (capsule.height / samplePoints));
+ submergedRatioTotal += normalizedDepth;
+
+ float forceMagnitude =
+ waterDensity *
+ gravity *
+ (capsuleVolume / samplePoints) *
+ normalizedDepth *
+ buoyancyMultiplier;
+
+ Vector3 buoyancyForce = Vector3.up * forceMagnitude;
+
+ rb.AddForceAtPosition(buoyancyForce, worldPoint, ForceMode.Force);
+ }
+ }
+
+ // 如果在水中,加阻力
+ if (submergedRatioTotal > 0f)
+ {
+ rb.linearDamping = waterDrag;
+ rb.angularDamping = waterAngularDrag;
+ }
+ else
+ {
+ rb.linearDamping = 0f;
+ rb.angularDamping = 0.05f;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Test/CapsuleBuoyancy.cs.meta b/Assets/Scripts/Test/CapsuleBuoyancy.cs.meta
new file mode 100644
index 000000000..08709b72f
--- /dev/null
+++ b/Assets/Scripts/Test/CapsuleBuoyancy.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3137aa469d6440af8cdeaa03a4c272d1
+timeCreated: 1772464119
\ No newline at end of file