This commit is contained in:
2026-09-05 23:22:30 +08:00
parent 69a699ef44
commit ee8f3cc12a
54 changed files with 268574 additions and 23 deletions
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 45a9f037266d35046a48bd7ee07d0073
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 89047cad758ac60419c56cdc84ec14a8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 011d6daac6096ee4c80a7b2e7c8731bf
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f05e1e44f49e29c45a5792409c2a6760
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dbe2834ca7f9971499c26233b987841a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d9799a73fd24a6a44bfa32a83b4a17a5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a84b83f184e635f41ae93d06ae415256
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 20c783af4b8a2a64792376744c7ee214
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b6f88089a91f0ab4cbd771d2a7112f93
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 805452aaf9c3b1c48a124faee3035613
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3ec0ac477bba55e4d85334033c615441
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 08bdd22ff5f3c8a41a2d107d8945ebfb
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b55e4f963e727c24ab6d8dd81d42d8b8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8c3bc36d8fa25344ebfe0cdd29c1d969
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 23866702642b07e4291942055674ed5a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7710811b4a7a0c247b198169050755fe
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3895a4c9ec76e3f4b945c90dd3583188
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4ae19f5b1ceb54e4c9b201c52cc7060c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 01682b427fe62fb429def9e7a30f2eec
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 28019eff0910e1f4e9062ef1f30bae7b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -33137,7 +33137,7 @@ Transform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 7}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 2613203858441896557}
m_Father: {fileID: 3127704411405386730}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 97f5d15674b470843a9e1c314860a697
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 080eb186e56776942b012e4f8177f4f7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,750 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &385484810677142526
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8497478621078305163}
- component: {fileID: 4484536736852867554}
m_Layer: 7
m_Name: line1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8497478621078305163
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 385484810677142526}
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: 3696333331215126624}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &4484536736852867554
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 385484810677142526}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 0
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: ce608c882a9ca484b94ae4396b8c0c22, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 1
m_Positions:
- {x: 0, y: 0, z: 0}
- {x: -2.256836, y: 0, z: 2.9524384}
m_Parameters:
serializedVersion: 3
widthMultiplier: 3
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.35789475, b: 0, a: 1}
key1: {r: 1, g: 0.35789475, b: 0, a: 1}
key2: {r: 1, g: 0.14576916, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 65535
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MaskInteraction: 0
m_UseWorldSpace: 0
m_Loop: 0
m_ApplyActiveColorSpace: 0
--- !u!1 &889041430228921812
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8205057798890285176}
- component: {fileID: 57640354523557526}
m_Layer: 7
m_Name: line3
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8205057798890285176
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 889041430228921812}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.02, y: 0, z: -0.004}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3696333331215126624}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &57640354523557526
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 889041430228921812}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 0
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: bef5944540563df44b0e2632e6d15f91, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 3
m_Positions:
- {x: 0, y: 0, z: 0}
- {x: -2.256836, y: 0, z: 2.9524384}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1.5
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.6934062, b: 0, a: 1}
key1: {r: 1, g: 0.6934062, b: 0, a: 1}
key2: {r: 1, g: 0.27183586, b: 0.024986982, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 65535
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MaskInteraction: 0
m_UseWorldSpace: 0
m_Loop: 0
m_ApplyActiveColorSpace: 0
--- !u!1 &1090309233415345593
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2848377205242279173}
- component: {fileID: 2580161249036895791}
m_Layer: 7
m_Name: line5
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2848377205242279173
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1090309233415345593}
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: 3696333331215126624}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &2580161249036895791
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1090309233415345593}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 0
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: fbcefef0d0123614eabaa4c63c1c84e9, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Positions:
- {x: 0, y: 0, z: 0}
- {x: -2.256836, y: 0, z: 2.9524384}
m_Parameters:
serializedVersion: 3
widthMultiplier: 2.5
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.79953486, b: 0.25943398, a: 1}
key1: {r: 1, g: 0.79953486, b: 0.25943398, a: 1}
key2: {r: 1, g: 0.27183586, b: 0.024986982, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 65535
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MaskInteraction: 0
m_UseWorldSpace: 0
m_Loop: 0
m_ApplyActiveColorSpace: 0
--- !u!1 &4842835722105583084
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2713766354848645039}
- component: {fileID: 8794009822688558177}
m_Layer: 7
m_Name: line2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2713766354848645039
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4842835722105583084}
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: 3696333331215126624}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &8794009822688558177
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4842835722105583084}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 0
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d58552f8ec3062e4daf8d15a1c226a53, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Positions:
- {x: 0, y: 0, z: 0}
- {x: -2.256836, y: 0, z: 2.9524384}
m_Parameters:
serializedVersion: 3
widthMultiplier: 3
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.4
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.5055494, b: 0.066037595, a: 1}
key1: {r: 1, g: 0.5055494, b: 0.066037595, a: 1}
key2: {r: 1, g: 0.14576916, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 65535
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MaskInteraction: 0
m_UseWorldSpace: 0
m_Loop: 0
m_ApplyActiveColorSpace: 0
--- !u!1 &5294742924000077673
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9170579408037849450}
m_Layer: 7
m_Name: Laser
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &9170579408037849450
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5294742924000077673}
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: 3696333331215126624}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: -0, z: -0}
--- !u!1 &7518458465778652151
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 649510477359111152}
- component: {fileID: 8019824546562651540}
m_Layer: 7
m_Name: line4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &649510477359111152
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7518458465778652151}
serializedVersion: 2
m_LocalRotation: {x: -0.000000029802322, 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: 3696333331215126624}
m_LocalEulerAnglesHint: {x: -0.0000034150946, y: 0, z: 0}
--- !u!120 &8019824546562651540
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7518458465778652151}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 0
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 57b0020f540e75841aed7d610b752218, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 1
m_Positions:
- {x: 0, y: 0, z: 0}
- {x: -2.256836, y: 0, z: 2.9524384}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1.2
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.7426204, b: 0, a: 1}
key1: {r: 1, g: 0.7426204, b: 0, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MaskInteraction: 0
m_UseWorldSpace: 0
m_Loop: 0
m_ApplyActiveColorSpace: 0
--- !u!1 &7822299184040054704
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3696333331215126624}
m_Layer: 7
m_Name: line
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3696333331215126624
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7822299184040054704}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8497478621078305163}
- {fileID: 2713766354848645039}
- {fileID: 8205057798890285176}
- {fileID: 649510477359111152}
- {fileID: 2848377205242279173}
m_Father: {fileID: 9170579408037849450}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4e8a4d64710e62e4cb4eb4d0bb55758f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 12cda9f43f17d6842af854823c4f8211
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -61,6 +61,8 @@ Shader "Boke/Addmul_Fresnel2" {
float2 uv : TEXCOORD0;
float3 normalWS : TEXCOORD1; // 世界空间法线
float3 viewDirWS : TEXCOORD2; // 世界空间视线方向
float3 positionWS : TEXCOORD3; // 世界空间顶点位置,用于无 法线 时的屏幕导数重建
float normalValid : TEXCOORD4; // 法线有效性标志(画布 未启用 Normal 通道时为 0)
float4 vertexColor : COLOR;
};
@@ -92,23 +94,43 @@ Shader "Boke/Addmul_Fresnel2" {
VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS);
output.normalWS = normalInput.normalWS;
// 3. 计算世界空间下的视角方向 (相机位置 - 顶点位置)
output.viewDirWS = GetWorldSpaceViewDir(vertexInput.positionWS);
// 3. 计算世界空间下的视角方向:透视时用 (相机位置 - 顶点位置);正交投影(含 UI Particle 的 Overlay 画布)时视线恒定,从视图投影矩阵深度行反推(Overlay 下视图矩阵与相机位置均不可靠,而视图投影矩阵直接决定粒子渲染位置,必然正确)
float4x4 projMatrix = UNITY_MATRIX_VP;
float isOrtho = projMatrix[3][3];
float3 depthAxis = projMatrix[2].xyz;
float depthAxisLen = length(depthAxis);
float3 orthoViewDir = depthAxisLen > 1e-8 ? -depthAxis / depthAxisLen : UNITY_MATRIX_V[2].xyz;
output.viewDirWS = lerp(GetWorldSpaceViewDir(vertexInput.positionWS), orthoViewDir, isOrtho);
output.positionWS = vertexInput.positionWS;
// 4. 传递粒子顶点色
// 4. 标记输入法线是否有效(画布 未开启 Normal 附加通道时 NORMAL 语义会传入全零)
output.normalValid = step(1e-8, dot(input.normalOS, input.normalOS));
// 5. 传递粒子顶点色
output.vertexColor = input.color;
return output;
}
half4 frag(Varyings input) : SV_Target {
// 1. 归一化插值带来的向量误差
float3 normalWS = normalize(input.normalWS);
// 1. 归一化插值带来的向量误差;无有效法线时改用屏幕空间导数重建(画布 未传 法线 时 normalize(0) 会产生 NaN 导致显示异常)
float3 viewDirWS = normalize(input.viewDirWS);
float3 normalWS;
if (input.normalValid > 0.5) {
normalWS = normalize(input.normalWS);
} else {
float3 derivedNormal = cross(ddy(input.positionWS), ddx(input.positionWS));
float derivedLen = length(derivedNormal);
normalWS = derivedLen > 1e-8 ? derivedNormal / derivedLen : viewDirWS;
normalWS *= dot(normalWS, viewDirWS) < 0.0 ? -1.0 : 1.0;
}
// 2. 核心菲涅尔(Fresnel)数学公式还原
// N dot V 代表法线和视线的夹角,saturate 裁切到 [0, 1]
float dotNV = saturate(dot(normalWS, viewDirWS));
// N dot V 代表法线和视线的夹角,saturate 裁切到 [0, 1];正交渲染(UI Particle 的 Overlay 画布)下法线朝向约定不可靠,取绝对值对齐视向,透视 3D 渲染保持原始行为
float4x4 projMatrix = UNITY_MATRIX_VP;
float isOrtho = projMatrix[3][3];
float dotNVraw = dot(normalWS, viewDirWS);
float dotNV = lerp(saturate(dotNVraw), abs(dotNVraw), isOrtho);
// 边缘处 dotNV 趋近于 0,通过 (1.0 - dotNV) 让边缘强度达到最大
float fresnel = pow(1.0 - dotNV, _Power) * _Scale;
fresnel = max(0.0, fresnel); // 防错防负数
@@ -133,4 +155,4 @@ Shader "Boke/Addmul_Fresnel2" {
ENDHLSL
}
}
}
}
+4 -2
View File
@@ -121,8 +121,10 @@ public static class JiGuangControl
/// <summary>
/// 多起点朝向:startPositions 与 targets/fxList 一一对应(每条激光独立起点),
/// 起点和终点强制使用指定 Z(同层)。起点数量不足时复用最后一个起点。
/// rotateZ:激光预制体自带的 Z 轴旋转(偏移),绕世界 Z 轴叠加在计算朝向上——
/// 预制体上转 Z = 激光在平面内整体旋转(手动修正角度用);X/Y 不参与,保证激光不会甩出平面。
/// </summary>
public static void JiGuangDirection(List<Vector3> startPositions, List<Transform> targets, List<Transform> fxList, float z)
public static void JiGuangDirection(List<Vector3> startPositions, List<Transform> targets, List<Transform> fxList, float z, float rotateZ)
{
if (startPositions == null || startPositions.Count == 0
|| targets == null || fxList == null || fxList.Count == 0)
@@ -141,7 +143,7 @@ public static class JiGuangControl
Vector3 dir = endPos - startPos;
if (dir.sqrMagnitude > 0.0001f)
fxList[fxIndex].rotation = Quaternion.LookRotation(dir);
fxList[fxIndex].rotation = Quaternion.Euler(0f, 0f, rotateZ) * Quaternion.LookRotation(dir);
fxIndex++;
}
+122 -3
View File
@@ -137,8 +137,14 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
private readonly List<LineRenderer> _zhanShenLasers = new List<LineRenderer>();
/// <summary>预制体形态激光实例列表(世界空间,由 JiGuangControl.JiGuangCreate 按目标数量重建)</summary>
private readonly List<Transform> _laserFx = new List<Transform>();
/// <summary>激光起点特效实例(UI 层:0=挂 turretRotate 下 selfOffsetJGStart 处,1/2=挂 JGFX 左右父对象下,跟随父节点)</summary>
private readonly List<GameObject> _laserStartFx = new List<GameObject>();
/// <summary>激光命中特效实例(与 _laserFx 一一对应,世界空间 Z=-50 层,跟随锁定目标)</summary>
private readonly List<GameObject> _laserHitFx = new List<GameObject>();
/// <summary>预制体形态激光的基准缩放(重建时取自 laserPrefab.transform.localScale)</summary>
private Vector3 _laserFxBaseScale = Vector3.one;
/// <summary>预制体形态激光的角度偏移:激光预制体自带的 Z 轴旋转(重建时缓存,绕世界 Z 叠加在计算朝向上)</summary>
private float _laserFxRotZOffset;
/// <summary>每条激光的起点缓存(索引与 _laserTargets 对齐,每帧复用避免 GC)</summary>
private readonly List<Vector3> _laserStarts = new List<Vector3>();
@@ -459,6 +465,17 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
if (_laserFx[i] != null && _laserFx[i].gameObject.activeSelf)
_laserFx[i].gameObject.SetActive(false);
}
// 起点/命中特效一并隐藏
for (int i = 0; i < _laserStartFx.Count; i++)
{
if (_laserStartFx[i] != null && _laserStartFx[i].activeSelf)
_laserStartFx[i].SetActive(false);
}
for (int i = 0; i < _laserHitFx.Count; i++)
{
if (_laserHitFx[i] != null && _laserHitFx[i].activeSelf)
_laserHitFx[i].SetActive(false);
}
}
/// <summary>
@@ -475,11 +492,15 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
for (int i = 0; i < _laserTargets.Count; i++)
_laserStarts.Add(GetZhanShenLaserStart(i));
// 目标数量变化时全量重建(锁定建立/解除/三发目标增减时触发),并刷新基准缩放
// 目标数量变化时全量重建(锁定建立/解除/三发目标增减时触发),并刷新基准缩放 + 预制体初始旋转偏移
if (_laserFx.Count != _laserTargets.Count)
{
_laserFxBaseScale = zsData.laserPrefab.transform.localScale;
// ⭐ 预制体自带的 Z 轴旋转:在激光预制体上转 Z = 激光平面内旋转(X/Y 不参与,防止甩出平面)
_laserFxRotZOffset = zsData.laserPrefab.transform.localEulerAngles.z;
JiGuangControl.JiGuangCreate(zsData.laserPrefab, _laserStarts, _laserTargets, _laserFx, null, -50f);
// ⭐ 起点/命中特效随激光全量重建(ZhanShenTurretData 上没拖预制体则不生成)
RebuildZhanShenLaserPointFx();
}
// 起点需每帧同步(座位布局/起点球位置变化);隐藏中的重新激活
@@ -492,9 +513,29 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
_laserFx[i].position = _laserStarts[i];
}
// 朝向 + 长度(多起点重载:起终点同层 Z=-50)
JiGuangControl.JiGuangDirection(_laserStarts, _laserTargets, _laserFx, -50f);
// 朝向 + 长度(多起点重载:起终点同层 Z=-50;朝向绕世界 Z 叠加预制体 Z 轴旋转偏移)
JiGuangControl.JiGuangDirection(_laserStarts, _laserTargets, _laserFx, -50f, _laserFxRotZOffset);
JiGuangControl.JiGuangLength(_laserStarts, _laserTargets, _laserFx, _laserFxBaseScale, zsData.laserLengthCorrect, -50f);
// ⭐ 起点特效挂 UI 起点节点下(位置由父节点决定自动跟随,无需刷),这里只负责重新激活;命中特效每帧跟随目标
for (int i = 0; i < _laserStartFx.Count; i++)
{
if (_laserStartFx[i] == null) continue;
if (!_laserStartFx[i].activeSelf)
_laserStartFx[i].SetActive(true);
}
for (int i = 0; i < _laserHitFx.Count; i++)
{
if (_laserHitFx[i] == null) continue;
if (!_laserHitFx[i].activeSelf)
_laserHitFx[i].SetActive(true);
if (i < _laserTargets.Count && _laserTargets[i] != null)
{
Vector3 hitPos = _laserTargets[i].position;
hitPos.z = -50f;
_laserHitFx[i].transform.position = hitPos;
}
}
}
/// <summary>LineRenderer 兜底形态(laserPrefab 为空):按需创建、多余的隐藏。每条激光独立起点</summary>
@@ -569,6 +610,84 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
Destroy(_laserFx[i].gameObject);
}
_laserFx.Clear();
// 起点/命中特效一并销毁
ClearZhanShenLaserPointFx();
}
// ==================== 激光起点/命中特效(三发+锁定) ====================
/// <summary>
/// 激光全量重建时同步重建起点/命中特效(数量与激光一一对应)。
/// 起点=UI 层挂起点节点下(0=turretRotate 的 selfOffsetJGStart 处,1/2=JGFX 左右父对象);命中=世界层 Z=-50 跟随锁定目标。
/// ZhanShenTurretData 上对应预制体没拖(为空)时不生成。
/// </summary>
private void RebuildZhanShenLaserPointFx()
{
ClearZhanShenLaserPointFx();
var zsDataEx = currentZhanShenData as ZhanShenTurretData;
if (zsDataEx == null) return;
if (zsDataEx.JGStartFXPrefab == null && zsDataEx.JGHitFXPrefab == null) return;
for (int i = 0; i < _laserTargets.Count; i++)
{
if (_laserTargets[i] == null) continue;
// ⭐ 起点特效(UI 层):挂到该条激光的起点节点下,位置由父节点决定(自动跟随,无需每帧刷)
// 0=主激光 turretRotate 下 selfOffsetJGStart 处(子对象语义,跟随炮台旋转);1/2=JGFX 左右父对象下
if (zsDataEx.JGStartFXPrefab != null)
{
Transform startParent = null;
Vector3 startLocal = Vector3.zero;
if (i == 0 && turretRotate != null)
{
startParent = turretRotate;
startLocal = new Vector3(zsDataEx.selfOffsetJGStart.x, zsDataEx.selfOffsetJGStart.y, 0f);
}
else if (i == 1 && JGFXLeftParent != null)
{
startParent = JGFXLeftParent;
}
else if (i == 2 && JGFXRightParent != null)
{
startParent = JGFXRightParent;
}
if (startParent != null)
{
GameObject startGo = Instantiate(zsDataEx.JGStartFXPrefab, startParent, false);
startGo.transform.localPosition = startLocal;
_laserStartFx.Add(startGo);
}
}
// 命中特效:克隆到该条激光的终点(锁定目标身上,Z 压 -50 与激光同层)
if (zsDataEx.JGHitFXPrefab != null)
{
Vector3 hitPos = _laserTargets[i].position;
hitPos.z = -50f;
_laserHitFx.Add(Instantiate(zsDataEx.JGHitFXPrefab, hitPos, Quaternion.identity));
}
}
}
/// <summary>销毁全部起点/命中特效实例(激光重建/销毁时调用)</summary>
private void ClearZhanShenLaserPointFx()
{
for (int i = 0; i < _laserStartFx.Count; i++)
{
if (_laserStartFx[i] != null)
Destroy(_laserStartFx[i]);
}
_laserStartFx.Clear();
for (int i = 0; i < _laserHitFx.Count; i++)
{
if (_laserHitFx[i] != null)
Destroy(_laserHitFx[i]);
}
_laserHitFx.Clear();
}
// ==================== 战神激光起点(每条激光独立起点) ====================
@@ -1838,11 +1838,11 @@ MonoBehaviour:
bulletPrefab_Two: {fileID: 0}
bulletPrefab: {fileID: 651644301851706979, guid: 502ef21f2785e994db30708b1b2b75f8,
type: 3}
laserPrefab: {fileID: 2047468684989902714, guid: 7fc392dfe503bdc4d8b904e3694d10b3,
laserPrefab: {fileID: 9190605895422637070, guid: 01682b427fe62fb429def9e7a30f2eec,
type: 3}
laserWidth: 10
laserColor: {r: 1, g: 0.3, b: 0.3, a: 0.9}
laserLengthCorrect: 1
laserLengthCorrect: 0.145
turretNumber: 0
turretType: 1
displayName:
@@ -1868,6 +1868,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 3774533120367730850, guid: 9e114e29415d348448005cf3fcebe71c,
type: 3}
JGStartFXPrefab: {fileID: 1251597548160642572, guid: 28019eff0910e1f4e9062ef1f30bae7b,
type: 3}
JGHitFXPrefab: {fileID: 1280062159248823723, guid: 4ae19f5b1ceb54e4c9b201c52cc7060c,
type: 3}
selfOffsetJGStart: {x: -17, y: 130}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -603,7 +603,7 @@ MonoBehaviour:
bulletPrefab_Two: {fileID: 0}
bulletPrefab: {fileID: 8042492732473352804, guid: 8cffe08ef18602549b34f1acffa184bb,
type: 3}
laserPrefab: {fileID: 3570719442366051326, guid: b85207ab022c87f4bbacf12a4e053b12,
laserPrefab: {fileID: 262182490962156576, guid: a84b83f184e635f41ae93d06ae415256,
type: 3}
laserWidth: 3
laserColor: {r: 1, g: 0.3, b: 0.3, a: 0.9}
@@ -633,6 +633,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 8826976359845876549, guid: ebdae2574a0ae4a4388300d711901565,
type: 3}
JGStartFXPrefab: {fileID: 164760584481366260, guid: 20c783af4b8a2a64792376744c7ee214,
type: 3}
JGHitFXPrefab: {fileID: 2640429678927560388, guid: d9799a73fd24a6a44bfa32a83b4a17a5,
type: 3}
selfOffsetJGStart: {x: 0, y: 180}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -1147,11 +1147,11 @@ MonoBehaviour:
bulletPrefab_Two: {fileID: 0}
bulletPrefab: {fileID: 5338854156757034471, guid: 612153392d725cb4bbb48a0a45038359,
type: 3}
laserPrefab: {fileID: 260798198810663346, guid: 322d9052281ded14bb2d66b265f17e94,
laserPrefab: {fileID: 3746816452858992240, guid: 3ec0ac477bba55e4d85334033c615441,
type: 3}
laserWidth: 3
laserColor: {r: 1, g: 0.3, b: 0.3, a: 0.9}
laserLengthCorrect: 1
laserLengthCorrect: 0.145
turretNumber: 0
turretType: 1
displayName:
@@ -1177,6 +1177,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 5231972868284677812, guid: 725cdf85f0036814887eb994c5b86e45,
type: 3}
JGStartFXPrefab: {fileID: 1914373571847512854, guid: 08bdd22ff5f3c8a41a2d107d8945ebfb,
type: 3}
JGHitFXPrefab: {fileID: 6679671021820812065, guid: 805452aaf9c3b1c48a124faee3035613,
type: 3}
selfOffsetJGStart: {x: 13, y: 203}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -1522,7 +1522,7 @@ MonoBehaviour:
bulletPrefab_Two: {fileID: 0}
bulletPrefab: {fileID: 6670333658430945950, guid: 8fe85e61b2779ff49a78511b999887b7,
type: 3}
laserPrefab: {fileID: 2118704316032470315, guid: 267d7f3a613546d4c8ecdf81bf6b173d,
laserPrefab: {fileID: 5897679978818280078, guid: f968506c49fa41842bb684eb1e7016ac,
type: 3}
laserWidth: 3
laserColor: {r: 1, g: 0.3, b: 0.3, a: 0.9}
@@ -1552,6 +1552,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 2444395877751059100, guid: 3a10d8f351e3d52489bceee1b4740337,
type: 3}
JGStartFXPrefab: {fileID: 5923090980122441520, guid: 12cda9f43f17d6842af854823c4f8211,
type: 3}
JGHitFXPrefab: {fileID: 7295806364047431194, guid: 080eb186e56776942b012e4f8177f4f7,
type: 3}
selfOffsetJGStart: {x: 90, y: 400}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -3757,11 +3757,11 @@ MonoBehaviour:
bulletPrefab_Two: {fileID: 0}
bulletPrefab: {fileID: 4117410505557008620, guid: 35ddcda2e7918414482f9857700ad7b0,
type: 3}
laserPrefab: {fileID: 8688509045372608649, guid: 146f0942c0556b144b34039c074d012b,
laserPrefab: {fileID: 7948828218305081940, guid: 8c3bc36d8fa25344ebfe0cdd29c1d969,
type: 3}
laserWidth: 3
laserColor: {r: 1, g: 0.3, b: 0.3, a: 0.9}
laserLengthCorrect: 1
laserLengthCorrect: 0.145
turretNumber: 0
turretType: 1
displayName:
@@ -3787,6 +3787,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 437630652280502677, guid: bec236ab3b54823468657c3cc7b0f204,
type: 3}
JGStartFXPrefab: {fileID: 1460688992351961627, guid: 23866702642b07e4291942055674ed5a,
type: 3}
JGHitFXPrefab: {fileID: 8868472629103351600, guid: 7710811b4a7a0c247b198169050755fe,
type: 3}
selfOffsetJGStart: {x: 55, y: 480}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -963,6 +963,10 @@ MonoBehaviour:
idleIndex: 0
JGQiuStartPrefab: {fileID: 2223497904095183553, guid: 8f9fe68d9da9d29499ea4e12b20da6d4,
type: 3}
JGStartFXPrefab: {fileID: 5020808015505471155, guid: f05e1e44f49e29c45a5792409c2a6760,
type: 3}
JGHitFXPrefab: {fileID: 1235709053033123186, guid: 89047cad758ac60419c56cdc84ec14a8,
type: 3}
selfOffsetJGStart: {x: 40, y: 200}
buttomOffsetZSRotateInit: {x: 0, y: 0, z: 0}
topOffsetZSRotateInit: {x: -125, y: 0, z: 0}
@@ -6,6 +6,10 @@ public class ZhanShenTurretData : TurretData
{
[Tooltip("散射激光起点球预制体:出场/换战神时克隆到座位的 JGFXLeftParent/JGFXRightParent 下")]
public GameObject JGQiuStartPrefab;
[Tooltip("激光起点特效预制体(UI 层):0=克隆到 turretRotate 下 selfOffsetJGStart 处(跟随炮台旋转),1/2=克隆到 JGFX 左右父对象下(跟随父节点);为空不生成")]
public GameObject JGStartFXPrefab;
[Tooltip("激光命中特效预制体:三发+锁定激活时克隆到每条激光终点(锁定目标身上),跟随目标移动;为空不生成")]
public GameObject JGHitFXPrefab;
[Tooltip("主激光起点偏移:turretRotate 的本地偏移(子对象语义),⭐ 跟随炮台旋转(炮口转向时起点绕炮台中心转)。编辑器运行时用 Gizmo 可视化")]
public Vector2 selfOffsetJGStart;
[Tooltip("下方座位战神初始旋转(欧拉角,直接设置,覆盖该战神预制体原始旋转)。全0=保持默认朝向")]
@@ -1791,7 +1791,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// 自动开火关闭 → 不自动旋转
if (!currSitData.IsAutoAttackOn) return;
// 自动扫射(左右摆动)
AutoSweepRotate();
//AutoSweepRotate();
}
private float autoRotateAngle = 0;
private float autoRotateSpeed = 40f;