根据提供的code differences信息,由于没有具体的代码变更内容,我将生成一个通用的commit message模板:

```
docs(readme): 更新文档说明

- 添加项目使用指南
- 完善API接口说明
- 修正错误的配置示例
```

注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
This commit is contained in:
huadexuan committed 2026-10-14 00:11:54 +08:00
1 parent 8cbe8e000b
commit 1a84ea999e
36 files changed
+32671 -135

No files matched your search

@@ -9,7 +9,19 @@ AnimatorOverrideController:
m_Name: "\u8352\u91CE\u730E\u624B"
m_Controller: {fileID: 9100000, guid: 040acc435cecb4b16b965a1136ce6834, type: 2}
m_Clips:
- m_OriginalClip: {fileID: -203655887218126122, guid: b82d15855591849bd80b62238bcd4ed3,
type: 3}
m_OverrideClip: {fileID: -203655887218126122, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
- m_OriginalClip: {fileID: -203655887218126122, guid: 9b11238d2f5f44e169f07fc190a2d31f,
type: 3}
m_OverrideClip: {fileID: -203655887218126122, guid: 934507468bfdf6540b738834d9075883,
type: 3}
- m_OriginalClip: {fileID: -203655887218126122, guid: 893027867e2cf420bb3ef33e38e0fc09,
type: 3}
m_OverrideClip: {fileID: -203655887218126122, guid: 1fcb0a89e327b5a4e86fa9161d1ff985,
type: 3}
- m_OriginalClip: {fileID: -203655887218126122, guid: 5072af719b9b1401787c6c55f048d8ed,
type: 3}
m_OverrideClip: {fileID: -203655887218126122, guid: 3cf486ef6ee70e743b217bd5f96516b8,
m_OverrideClip: {fileID: -203655887218126122, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: C3JKtSmpAnPvGVr7w+A19FElHIFrKeMM24PSIpyHa+yb+rR3bbZxCAE=
guid: CnMfsXmuWnmOYRs7nb3rtOwRSQFAbayd2TWDGk3LtKKNkswK2Rrxpdo=
folderAsset: yes
DefaultImporter:
externalObjects: {}
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u77DB"
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 83bc5f82ae46e4ffcb34d202baef9962, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: WytNvHuoWyq872pzsDN4IzUnHWC8pOGcoosRfGp+u4sO0Sctrv98Uy8=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large. Load diff
@@ -1,11 +1,16 @@
fileFormatVersion: 2
guid: Xn8dtCn+USoM3y8Q1spG7or0i5ihQ5/VOTuLQmVn9ElNxLu+WwKV5R4=
guid: XXpN4S/5UX6OnP4NwkytXqxUApWqcYhIZqLHjDaML/Ooyu5YwioyEJw=
ModelImporter:
serializedVersion: 22361
internalIDToNameTable: []
externalObjects: {}
externalObjects:
- first:
type: UnityEngine:Material
assembly: UnityEngine.CoreModule
name: defaultMat
second: {fileID: 2100000, guid: dab9a58acadae4f108cb8909cdb4af6d, type: 2}
materials:
materialImportMode: 2
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 1
@@ -43,10 +48,10 @@ ModelImporter:
tuanjieGIGenFacetNums: 12
meshes:
lODScreenPercentages: []
globalScale: 1
globalScale: 2
meshCompression: 0
totalVerticesCount: 14728
totalTrianglesCount: 5000
totalVerticesCount: 1480
totalTrianglesCount: 500
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
@@ -93,15 +98,71 @@ ModelImporter:
isPossibleOverflow: 0
hasBoneData: 0
isBoneCountOverflow: 0
virtualGeometryPlatformSettings: []
virtualGeometryPlatformSettings:
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: DefaultVirtualGeometryPlatform
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Standalone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: iPhone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Android
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
selectedVGMeshes:
- index: 0
meshName: node_0
meshName: default
lodLevel: 0
meshGeometryBuffer: 0
supportVGMeshes:
- index: 0
meshName: node_0
meshName: default
lodLevel: 0
meshGeometryBuffer: 0
tangentSpace:
@@ -129,7 +190,7 @@ ModelImporter:
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
globalScale: 2
rootMotionBoneName:
defaultPoseIndex: -1
hasTranslationDoF: 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 872 KiB

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: WigcsH+oBn1GkOluyD9zP1q1crQXqgLJjAQC2mjZsBphsxbFlZfe0x0=
guid: B3lN5i/7W3k4czjmow0f9+kcKecF2HNMOB5OL3gD4yYKx+ay7POPpjc=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -112,20 +112,6 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: DClJsSKrBi3US/iRrb+5vjrAFyXbuqBpZLuP3awC3HzYgpKnYMf0Dik=
guid: Xn8dtCn+USoM3y8Q1spG7or0i5ihQ5/VOTuLQmVn9ElNxLu+WwKV5R4=
ModelImporter:
serializedVersion: 22361
internalIDToNameTable: []
@@ -45,7 +45,7 @@ ModelImporter:
takeName: mixamo.com
internalID: -203655887218126122
firstFrame: 0
lastFrame: 66
lastFrame: 68
wrapMode: 0
orientationOffsetY: 0
level: 0
@@ -66,13 +66,20 @@ ModelImporter:
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0.28456584
- time: 0.302408
functionName: OnAttackEffect
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.302408
functionName: OnSkillHit1
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
intervals: []
transformMask: []
maskType: 3
@@ -92,8 +99,8 @@ ModelImporter:
lODScreenPercentages: []
globalScale: 200
meshCompression: 0
totalVerticesCount: 9862
totalTrianglesCount: 4998
totalVerticesCount: 14728
totalTrianglesCount: 5000
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
@@ -410,129 +417,127 @@ ModelImporter:
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Hips
parentName: "\u8352\u91CE\u730E\u624B(Clone)"
position: {x: 7.2759576e-10, y: 0.96161616, z: -0.017580768}
rotation: {x: -0, y: -0, z: 4.0927256e-10, w: 1}
scale: {x: 0.99999994, y: 1, z: 1}
position: {x: -0.0015550415, y: 1.0448333, z: 0.0008989109}
rotation: {x: -0.057999488, y: 0.085499845, z: -0.03630227, w: 0.9939859}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftUpLeg
parentName: mixamorig:Hips
position: {x: -0.122900926, y: -0.064272955, z: 0.019370982}
rotation: {x: 0.00049928314, y: -0.031455517, z: 0.99937916, w: 0.015862847}
scale: {x: 1.0000004, y: 1.0000004, z: 1}
position: {x: -0.12708198, y: -0.06653226, z: 0.0027186214}
rotation: {x: -0.4313436, y: 0.039589703, z: 0.9001783, w: 0.045325007}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftLeg
parentName: mixamorig:LeftUpLeg
position: {x: 2.775558e-17, y: 0.42458522, z: 0}
rotation: {x: -0.070675656, y: 0.001526951, z: -0.021546036, w: 0.9972655}
scale: {x: 1.0000006, y: 1.0000005, z: 1.0000001}
position: {x: -5.551116e-17, y: 0.5007372, z: -4.336809e-19}
rotation: {x: -0.32176197, y: -0.18966085, z: 0.0014265925, w: 0.9276293}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftFoot
parentName: mixamorig:LeftLeg
position: {x: 2.775558e-17, y: 0.36031312, z: 3.4694474e-18}
rotation: {x: 0.5864733, y: 0.058979593, z: -0.042879384, w: 0.8066796}
scale: {x: 1, y: 1, z: 0.9999998}
position: {x: -0, y: 0.436047, z: 6.938895e-18}
rotation: {x: 0.72539276, y: 0.026533838, z: 0.0035809833, w: 0.6878144}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftToeBase
parentName: mixamorig:LeftFoot
position: {x: -0, y: 0.19909826, z: 2.775558e-17}
rotation: {x: 0.23450264, y: 0.030121133, z: -0.007269758, w: 0.9716215}
scale: {x: 1.0000004, y: 1.0000002, z: 1.0000001}
position: {x: -0, y: 0.20160635, z: 2.775558e-17}
rotation: {x: 0.28748184, y: 0.002484446, z: 0.04328514, w: 0.9568043}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftToe_End
parentName: mixamorig:LeftToeBase
position: {x: 2.775558e-17, y: 0.07518335, z: 8.673618e-19}
position: {x: -0, y: 0.07973328, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightUpLeg
parentName: mixamorig:Hips
position: {x: 0.12708198, y: -0.06653226, z: 0.00455708}
rotation: {x: 0.090018176, y: 0.060366243, z: 0.9873917, w: -0.11537023}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightLeg
parentName: mixamorig:RightUpLeg
position: {x: -2.775558e-17, y: 0.50075597, z: 8.673618e-19}
rotation: {x: -0.32498062, y: 0.035976253, z: 0.018000348, w: 0.9448647}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightFoot
parentName: mixamorig:RightLeg
position: {x: -0, y: 0.4361834, z: -1.387779e-17}
rotation: {x: 0.7291296, y: -0.075724706, z: -0.07305119, w: 0.67623913}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightToeBase
parentName: mixamorig:RightFoot
position: {x: -0, y: 0.20101744, z: 0}
rotation: {x: 0.26940238, y: -0.028466098, z: -0.02129622, w: 0.96237135}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightToe_End
parentName: mixamorig:RightToeBase
position: {x: -2.775558e-17, y: 0.077961974, z: -4.336809e-19}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Spine
parentName: mixamorig:Hips
position: {x: -0, y: 0.11601777, z: -0.008428418}
rotation: {x: -0.03625217, y: 0.000000005805401, z: 5.291295e-10, w: 0.9993427}
scale: {x: 1, y: 1, z: 0.99999994}
position: {x: -0, y: 0.119804874, z: -0.014100285}
rotation: {x: 0.036728185, y: -0.02707523, z: 0.014438407, w: 0.9988541}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Spine1
parentName: mixamorig:Spine
position: {x: -0, y: 0.13571076, z: 0}
rotation: {x: -0.000000029802322, y: -0.0000000029290932, z: 1.5196491e-10,
w: 1}
scale: {x: 0.99999994, y: 0.99999994, z: 1}
position: {x: -0, y: 0.14073713, z: 0}
rotation: {x: 0.051300958, y: -0.054152843, z: 0.028569069, w: 0.99680465}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Spine2
parentName: mixamorig:Spine1
position: {x: -0, y: 0.15509796, z: 0}
rotation: {x: -0, y: -0.000000005462792, z: -0.0000000051386957, w: 1}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001}
position: {x: -0, y: 0.16084242, z: 0}
rotation: {x: -0.05184933, y: -0.056821056, z: 0.022805413, w: 0.9967763}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Neck
parentName: mixamorig:Spine2
position: {x: -0, y: 0.17448525, z: 0.000000012214195}
rotation: {x: 0.0362522, y: 4.9456883e-11, z: -0.0000000013633452, w: 0.9993427}
scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994}
position: {x: -0, y: 0.18094777, z: 0.000000017033209}
rotation: {x: 0.038379487, y: -0.07997296, z: -0.009701707, w: 0.9960107}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:Head
parentName: mixamorig:Neck
position: {x: -0, y: 0.14759588, z: 0.017679807}
rotation: {x: 0.0000000037252903, y: 0.000000002910383, z: 0.0000000010913939,
w: 1}
scale: {x: 0.99999994, y: 0.9999999, z: 1.0000001}
position: {x: -0, y: 0.13584413, z: 0.06572203}
rotation: {x: -0.041596327, y: -0.19943602, z: 0.037355587, w: 0.97831464}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:HeadTop_End
parentName: mixamorig:Head
position: {x: -0, y: 0.23794629, z: 0.028502438}
position: {x: -0, y: 0.24706805, z: 0.11953268}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftShoulder
parentName: mixamorig:Spine2
position: {x: -0.05832574, y: 0.1505866, z: -0.0022551804}
rotation: {x: 0.55615306, y: -0.4300368, z: 0.5748818, w: 0.41865632}
scale: {x: 1.0000004, y: 1.0000006, z: 1.0000006}
position: {x: -0.06582137, y: 0.15840933, z: -0.002626976}
rotation: {x: 0.6132891, y: -0.36678275, z: 0.4890201, w: 0.5002063}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftArm
parentName: mixamorig:LeftShoulder
position: {x: -0, y: 0.12277112, z: 0}
rotation: {x: -0.12750787, y: -0.052892506, z: -0.006906688, w: 0.9904022}
scale: {x: 1, y: 1.0000002, z: 1.0000002}
position: {x: -0, y: 0.13926831, z: 0}
rotation: {x: -0.109285444, y: -0.07530944, z: 0.07437192, w: 0.98835933}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftForeArm
parentName: mixamorig:LeftArm
position: {x: -1.0408341e-17, y: 0.32773098, z: 0}
rotation: {x: -0.0111816665, y: -0.027591016, z: -0.03239311, w: 0.9990318}
scale: {x: 0.9999997, y: 0.9999998, z: 0.9999998}
position: {x: -5.551116e-17, y: 0.37595367, z: -1.1102232e-16}
rotation: {x: -0.015563387, y: 0.23476875, z: -0.02611066, w: 0.97157586}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:LeftHand
parentName: mixamorig:LeftForeArm
position: {x: -5.551116e-17, y: 0.3340844, z: 1.1102232e-16}
rotation: {x: -0, y: -0, z: -1.1641532e-10, w: 1}
scale: {x: 1, y: 1, z: 1.0000001}
position: {x: -6.938895e-18, y: 0.36493555, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightShoulder
parentName: mixamorig:Spine2
position: {x: 0.05832574, y: 0.15051161, z: -0.0012226059}
rotation: {x: -0.56145275, y: -0.42600432, z: 0.5702429, w: -0.4220358}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001}
position: {x: 0.06582137, y: 0.15841529, z: -0.0026775594}
rotation: {x: 0.56953573, y: 0.39988846, z: -0.49522352, w: 0.52006924}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightArm
parentName: mixamorig:RightShoulder
position: {x: -0, y: 0.12277112, z: 2.2204463e-16}
rotation: {x: 0.12768778, y: -0.06803748, z: 0.0033242106, w: -0.9894725}
scale: {x: 0.99999976, y: 1.0000001, z: 0.9999998}
position: {x: -2.775558e-17, y: 0.13926831, z: 0}
rotation: {x: -0.007774665, y: 0.12842752, z: -0.16903602, w: 0.9771759}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightForeArm
parentName: mixamorig:RightArm
position: {x: -0, y: 0.32781148, z: 0}
rotation: {x: -0.0118109435, y: 0.011750162, z: 0.031905137, w: 0.9993521}
scale: {x: 1.0000002, y: 1.000001, z: 1.0000005}
position: {x: 5.551116e-17, y: 0.3760215, z: -2.2204463e-16}
rotation: {x: -0.020219214, y: -0.24051912, z: 0.040518124, w: 0.9695876}
scale: {x: 1, y: 1, z: 1}
- name: mixamorig:RightHand
parentName: mixamorig:RightForeArm
position: {x: -0, y: 0.335302, z: -1.1102232e-16}
rotation: {x: -2.3283064e-10, y: -0, z: -0.000000030053343, w: 1}
scale: {x: 0.99999994, y: 0.9999997, z: 1}
- name: mixamorig:RightUpLeg
parentName: mixamorig:Hips
position: {x: 0.122900926, y: -0.064272955, z: 0.017555349}
rotation: {x: -0.000482568, y: -0.030399304, z: 0.9994118, w: -0.015865445}
scale: {x: 1.0000002, y: 1.0000002, z: 0.99999994}
- name: mixamorig:RightLeg
parentName: mixamorig:RightUpLeg
position: {x: -0, y: 0.4245297, z: 1.387779e-17}
rotation: {x: -0.07598258, y: -0.0016407911, z: 0.02152683, w: 0.9968754}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001}
- name: mixamorig:RightFoot
parentName: mixamorig:RightLeg
position: {x: 2.775558e-17, y: 0.36096406, z: 1.7347236e-17}
rotation: {x: 0.5934667, y: -0.057367228, z: 0.04246735, w: 0.8016874}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000002}
- name: mixamorig:RightToeBase
parentName: mixamorig:RightFoot
position: {x: -0, y: 0.20220801, z: 0}
rotation: {x: 0.23086213, y: -0.02866849, z: 0.0068053757, w: 0.9725402}
scale: {x: 1.0000004, y: 1.0000002, z: 1}
- name: mixamorig:RightToe_End
parentName: mixamorig:RightToeBase
position: {x: 2.775558e-17, y: 0.077429935, z: 8.673618e-19}
position: {x: 1.387779e-17, y: 0.3655116, z: -1.1102232e-16}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
namedPoseList:
@@ -44,7 +44,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 0ccff60d18b826248b2fc07e18698733, type: 3}
m_Texture: {fileID: 2800000, guid: eb35e5e648d29674095316a1861e33b5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -78,6 +78,6 @@ Material:
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.990566, g: 0.9461387, b: 0.4999555, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: DylM43yrUy//7x6SbZSq1Vql2uiQyUvgZpZV1oQA7DZCQ8veZ/iNRnE=
guid: WigcsH+oBn1GkOluyD9zP1q1crQXqgLJjAQC2mjZsBphsxbFlZfe0x0=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -72,7 +72,7 @@ TextureImporter:
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 512
maxTextureSize: 1024
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: Cnkfty6pAXxrIyFDGh9xzfMeac7/wkbDRIfb8FYtlxxK93xOkE/ZO74=
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+197
View File
@@ -0,0 +1,197 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!1 &2737986478346178577
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 1960605782150938687}
- component: {fileID: 7696194782277025840}
- component: {fileID: 7464509331295443333}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: "\u77DB"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1960605782150938687
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2737986478346178577}
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: 848334787070880562}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!136 &7696194782277025840
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2737986478346178577}
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: 2
m_Radius: 0.15
m_Height: 2.4
m_Direction: 2
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &7464509331295443333
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2737986478346178577}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8c91fecbd8f3443fab9c49d64a176a69, type: 3}
m_Name:
m_EditorClassIdentifier:
explosionPrefab: {fileID: 0}
useParabola: 1
parabolaHeight: 1
--- !u!1 &3684139984225480799
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 848334787070880562}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: Model
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &848334787070880562
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3684139984225480799}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: -1.2}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5783367108751981183}
m_Father: {fileID: 1960605782150938687}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &4030506361744548548
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 5783367108751981183}
- component: {fileID: 2636493951433660755}
- component: {fileID: 8539235892527197280}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: default
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5783367108751981183
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4030506361744548548}
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: 848334787070880562}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2636493951433660755
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4030506361744548548}
m_Mesh: {fileID: -2432090755550338912, guid: b0bd5d25e17e3460aa3c0b95ab3d0b23, type: 3}
--- !u!23 &8539235892527197280
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4030506361744548548}
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_virtualGeometry: 0
m_ShadingRate: 0
m_ForceDisableGRD: 0
m_ForceDisableSmallMeshCull: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: dab9a58acadae4f108cb8909cdb4af6d, 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}
m_MaskInteraction: 0
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: Cngdsi35VC5IyjkptGNyvgS3ZNUj2arHqV+mknkfB5ot6Bur8Kzzyhw=
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,322 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!1 &6836417283764118635
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 363022258710515080}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: pos
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &363022258710515080
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6836417283764118635}
serializedVersion: 2
m_LocalRotation: {x: 0.6149232, y: -0.3873518, z: 0.43194067, w: 0.534093}
m_LocalPosition: {x: -0.033, y: 0.016, z: -0.04}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1953832374028754179}
m_LocalEulerAnglesHint: {x: 82.515, y: -244.373, z: -173.392}
--- !u!1001 &191619568455623371
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalPosition.x
value: -4.83
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalPosition.y
value: 0.16
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalPosition.z
value: -7.34
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_Name
value: "\u8352\u91CE\u730E\u624B"
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_TagString
value: Friend
objectReference: {fileID: 0}
- target: {fileID: 5866666021909216657, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 22100000, guid: 4679c0a9b2def8c4ea4284e2b96c45f6,
type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 1852576806548013000, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 363022258710515080}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 6141292332977638874}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 8581139391828332865}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 7327850438053316823}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 5957794876603811282}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 851057282016607432}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 7071587077432256825}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
insertIndex: -1
addedObject: {fileID: 289440312317837195}
m_SourcePrefab: {fileID: 100100000, guid: a5213c2a05540ba45839271da41c0177, type: 3}
--- !u!1 &1038551587431292826 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
m_PrefabInstance: {fileID: 191619568455623371}
m_PrefabAsset: {fileID: 0}
--- !u!143 &6141292332977638874
CharacterController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
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: 3
m_Height: 2
m_Radius: 0.4
m_SlopeLimit: 45
m_StepOffset: 0.3
m_SkinWidth: 0.08
m_MinMoveDistance: 0.001
m_Center: {x: 0, y: 1, z: 0}
--- !u!195 &8581139391828332865
NavMeshAgent:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_AgentTypeID: 0
m_Radius: 0.5
m_Speed: 2.2
m_Acceleration: 8
avoidancePriority: 50
m_AngularSpeed: 120
m_StoppingDistance: 0
m_AutoTraverseOffMeshLink: 1
m_AutoBraking: 1
m_AutoRepath: 1
m_Height: 2
m_BaseOffset: 0
m_WalkableMask: 4294967295
m_ObstacleAvoidanceType: 4
--- !u!114 &7327850438053316823
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 15c30b8bf55ed47c38c74d59aa9fd021, type: 3}
m_Name:
m_EditorClassIdentifier:
maxHealth: 100
currentHealth: 100
maxShield: 0
currentShield: 0
showEnergyBar: 1
maxEnergy: 100
_currentEnergy: 0
heightOffset: 0.65
barWidth: 1.2
borderColor: {r: 0.03, g: 0.03, b: 0.03, a: 0.95}
deathEffectDuration: 1.1
deathEffectColor: {r: 0.55, g: 0.9, b: 1, a: 1}
canRevive: 0
showDamageNumbers: 1
damageNumberDuration: 0.8
damageNumberRiseHeight: 1.2
damageNumberSpawnHeight: 1.5
damageNumberSize: 0.09
unitLevel: 1
--- !u!114 &5957794876603811282
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 66fc70939369642959b6b86bb733cdda, type: 3}
m_Name:
m_EditorClassIdentifier:
showStunIndicator: 1
indicatorHeight: 0.35
stunIndicatorPrefab: {fileID: 0}
isStunImmune: 0
--- !u!114 &851057282016607432
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d17bce049c6564368930cdcaba9b43c2, type: 3}
m_Name:
m_EditorClassIdentifier:
teamId: 0
--- !u!114 &7071587077432256825
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: da330bbd52e2a424dbe6231c018a3c60, type: 3}
m_Name:
m_EditorClassIdentifier:
characterDataName: "\u8352\u91CE\u730E\u624BData"
level: 1
speed: 5
detectionRange: 30
attackRange: 6
modelFacingOffset: 90
attackPower: 10
critRate: 0
critMultiplier: 1.5
lifestealRate: 0
damageReductionRate: 0
skillChargeMultiplier: 1
attackDuration: 0
attackType: 2
projectilePrefab: {fileID: 2737986478346178577, guid: 52277d7ec0cc74b40afefb3e5728bd11,
type: 3}
projectileSpawnPoint: {fileID: 363022258710515080}
projectileSpeed: 16
projectileLifetime: 5
energyPerAttack: 20
targetSpreadBias: 6
summonerMode: 0
returnToAnchorWhenIdle: 0
anchorArrivalDistance: 0.35
useAnchorLeash: 0
useEngagementZLine: 1
engagementZThreshold: 10
target: {fileID: 0}
--- !u!114 &289440312317837195
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038551587431292826}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5ef566a8b0adb40e685898561f07fa26, type: 3}
m_Name:
m_EditorClassIdentifier:
skillSpearPrefab: {fileID: 2764558772763034019, guid: 530244b73621c4d668f5bec8e7630348,
type: 3}
damageBonusPerMeter: 0.05
maxDistanceBonus: 0.45
knockbackDistance: 2
--- !u!4 &1953832374028754179 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1852576806548013000, guid: a5213c2a05540ba45839271da41c0177,
type: 3}
m_PrefabInstance: {fileID: 191619568455623371}
m_PrefabAsset: {fileID: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: CSkes3+kUnt1SQHyOVEyQw2Nhjq+cLevrkUPfiqJxcIatp7suNKCRLc=
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d4c1ba65157c9401b8efe2032fe42e87, type: 3}
m_Name: "\u8352\u91CE\u730E\u624BData"
m_EditorClassIdentifier:
characterId: "\u8352\u91CE\u730E\u624B"
characterName: "\u8352\u91CE\u730E\u624B"
rarity: 2
description:
cardIcon: {fileID: 0}
unitPrefab: {fileID: 1038551587431292826, guid: 6c16e910108534ec9a7d007feb97fec6,
type: 3}
baseMaxHealth: 240
baseAttackPower: 28
baseMoveSpeed: 2.2
healthPerLevel: 22
attackPerLevel: 2.5
moveSpeedPerLevel: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: DS9J4Cn4Bnrmd5m1Hp9jVs/NIHZsMAXoPIaLo5zTc95w+aJIlTuQhNo=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,343 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
/// <summary>
/// 荒野猎手技能:穿心猎矛体系(1/3/6/10 级完整阶梯)
/// 1级【穿心猎矛】:蓄力重投飞矛,自动锁定全场【距离自身最远的目标(优先狙杀敌方后排)】,造成 180% 物理伤害;且【距离越远伤害越高】(每相距 1 米额外提升 5% 伤害,最高 +45%)!附带金色破空流光特效!
/// 3级【极速重贯】:飞矛飞行速度 +40%,基础伤害提升至 230%,暴击率额外 +20%,远距离狙杀威慑力大增!
/// 6级【破阵震退】:蓄力重矛命中目标时产生破空震荡,【将其向后强力击退 2.0 米】(纯物理后退,打乱敌方后排阵型,且不产生眩晕冗余)!
/// 10级【绝命猎杀】:飞矛附带风暴雷霆之势,基础伤害飙升至 340% 极限制导高伤;【若成功斩杀目标,立即返还 50% 技能能量】,快速准备下一发致命狙杀!
/// </summary>
public class WildHunterSkill : UnitSkill
{
[Header("技能飞矛配置")]
[Tooltip("技能重矛预制体 (Assets/Prefabs/武器飞行物/技能重矛.prefab)")]
public GameObject skillSpearPrefab;
[Tooltip("每米增加的伤害比例 (默认 5%)")]
public float damageBonusPerMeter = 0.05f;
[Tooltip("距离伤害加成上限 (默认 45%)")]
public float maxDistanceBonus = 0.45f;
[Tooltip("6级击退距离 (米)")]
public float knockbackDistance = 2.0f;
private bool isSkillPending = false;
private GameObject currentSkillTarget;
private void EnsureUnit()
{
if (unit == null)
{
unit = GetComponent<UnitBase>();
}
}
/// <summary>
/// 当能量蓄满时触发:锁定最远目标,播放投掷技能动作
/// </summary>
public override void ReleaseSkill()
{
EnsureUnit();
if (unit == null) return;
WorldHealthBar healthBar = unit.GetComponent<WorldHealthBar>();
if (healthBar == null || healthBar.IsDead) return;
// 1级核心机制:自动锁定全场距离自身最远的敌方目标(后排核心/远程单位)
currentSkillTarget = FindFurthestEnemy();
if (currentSkillTarget == null) return;
// 技能施法朝向:应用 unit.modelFacingOffset 保证与普攻一致的朝向修正
Vector3 toTarget = currentSkillTarget.transform.position - unit.transform.position;
toTarget.y = 0f;
if (toTarget.sqrMagnitude > 0.001f)
{
Quaternion targetRotation = Quaternion.LookRotation(toTarget.normalized, Vector3.up);
unit.transform.rotation = Quaternion.Euler(0f, targetRotation.eulerAngles.y + unit.modelFacingOffset, 0f);
}
isSkillPending = true;
// 播放投掷动画,由 OnSkillHit1 帧投出重矛
unit.PlaySkillAnimation(OnSkillAnimationFinished, 2.0f);
Debug.Log($"<color=orange>【荒野猎手】开始蓄力【穿心猎矛】!</color> 目标锁定全场最远敌方: {currentSkillTarget.name} (距离: {Vector3.Distance(unit.transform.position, currentSkillTarget.transform.position):F1}m)");
}
/// <summary>
/// 动画事件帧方法:在手臂向后蓄力后猛烈投掷的瞬间触发 (OnSkillHit1)
/// </summary>
public void OnSkillHit1()
{
if (!isSkillPending) return;
isSkillPending = false;
EnsureUnit();
if (unit == null) return;
GameObject opponent = (currentSkillTarget != null && currentSkillTarget.activeInHierarchy) ? currentSkillTarget : FindFurthestEnemy();
if (opponent == null) return;
int level = unit.level;
// 1. 确定重矛预制体 (技能重矛自带金色破空粒子拖尾 SparkleMissileYellow)
GameObject prefab = skillSpearPrefab;
#if UNITY_EDITOR
if (prefab == null)
{
prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Prefabs/武器飞行物/技能重矛.prefab");
}
#endif
if (prefab == null) prefab = unit.projectilePrefab;
if (prefab == null) return;
// 2. 确定出生点 (右手 pos)
Transform spawnPoint = unit.projectileSpawnPoint != null ? unit.projectileSpawnPoint : unit.transform;
Vector3 spawnPos = spawnPoint.position;
// 3. 计算伤害与距离加成 (1级 180%, 3级 230%, 10级 340%)
float baseMultiplier = 1.80f;
if (level >= 10) baseMultiplier = 3.40f;
else if (level >= 3) baseMultiplier = 2.30f;
float distance = Vector3.Distance(unit.transform.position, opponent.transform.position);
float distanceBonus = Mathf.Min(distance * damageBonusPerMeter, maxDistanceBonus);
float finalMultiplier = baseMultiplier * (1f + distanceBonus);
// 3级解锁:暴击率额外 +20%,飞行速度提升 40%
float spearSpeed = (level >= 3) ? (unit.projectileSpeed * 1.4f) : unit.projectileSpeed;
bool isCrit = (level >= 3) && (Random.value < (unit.critRate + 0.20f));
float totalDamage = unit.attackPower * finalMultiplier * (isCrit ? unit.critMultiplier : 1.0f);
// 4. 实例化技能重矛
Vector3 flatDirection = (opponent.transform.position - spawnPos);
flatDirection.y = 0f;
Quaternion rot = Quaternion.LookRotation(flatDirection.normalized, Vector3.up);
GameObject spearGo = Instantiate(prefab, spawnPos, rot);
// 5. 挂载技能专属落弹与结算处理脚本
var runner = spearGo.AddComponent<WildHunterSpearRunner>();
runner.Launch(opponent, spawnPos, totalDamage, unit, spearSpeed, level, knockbackDistance);
Debug.Log($"<color=yellow>【穿心猎矛】破空投出!</color> 目标: {opponent.name}, 基础倍率: {baseMultiplier * 100:F0}%, 距离加成: +{distanceBonus * 100:F0}%, 最终伤害: {totalDamage:F1} (等级: {level})");
}
/// <summary>
/// 寻找全场距离自身最远的存活敌方目标
/// </summary>
private GameObject FindFurthestEnemy()
{
if (unit == null) return null;
UnitTeam myTeam = unit.GetComponent<UnitTeam>();
var allTeams = Object.FindObjectsOfType<UnitTeam>();
GameObject furthestEnemy = null;
float maxDistanceSq = -1f;
Vector3 myPos = unit.transform.position;
foreach (var t in allTeams)
{
if (t == null || !t.gameObject.activeInHierarchy) continue;
bool isEnemy = (myTeam != null && myTeam.IsEnemy(t.gameObject))
|| (unit.CompareTag("Friend") && (t.CompareTag("Enemy") || t.gameObject.name.Contains("小怪") || t.gameObject.name.Contains("敌方")));
if (!isEnemy) continue;
var targetUnit = t.GetComponentInParent<UnitBase>();
if (targetUnit != null && targetUnit.IsDead) continue;
var bar = t.GetComponentInParent<WorldHealthBar>();
if (bar != null && bar.IsDead) continue;
GameObject enemyGo = targetUnit != null ? targetUnit.gameObject : t.gameObject;
float distSq = (enemyGo.transform.position - myPos).sqrMagnitude;
if (distSq > maxDistanceSq)
{
maxDistanceSq = distSq;
furthestEnemy = enemyGo;
}
}
return furthestEnemy != null ? furthestEnemy : unit.Target;
}
private void OnSkillAnimationFinished()
{
isSkillPending = false;
}
private void OnDestroy()
{
isSkillPending = false;
}
}
/// <summary>
/// 负责技能重矛的抛物线飞行、目标命中、距离伤害结算、6级后仰击退与10级击杀返还能量
/// </summary>
public class WildHunterSpearRunner : MonoBehaviour
{
private GameObject target;
private float damage;
private UnitBase ownerUnit;
private float speed;
private int skillLevel;
private float knockbackDist;
private bool hasHit = false;
private Vector3 startPosition;
private float totalDistance;
private float traveledDistance;
public void Launch(GameObject targetObj, Vector3 startPos, float totalDmg, UnitBase owner, float moveSpeed, int level, float kbDist)
{
target = targetObj;
damage = totalDmg;
ownerUnit = owner;
speed = moveSpeed > 5f ? moveSpeed : 18f;
skillLevel = level;
knockbackDist = kbDist;
// 接管飞行,禁用自带的普通直线 Projectile 组件
var defaultProj = GetComponent<Projectile>();
if (defaultProj != null) defaultProj.enabled = false;
startPosition = startPos;
traveledDistance = 0f;
if (targetObj != null)
{
Vector3 diff = targetObj.transform.position - startPosition;
diff.y = 0f;
totalDistance = Mathf.Max(0.5f, diff.magnitude);
}
else
{
totalDistance = 10f;
}
Destroy(gameObject, 5f);
}
private void Update()
{
if (hasHit) return;
if (target == null || !target.activeInHierarchy)
{
Destroy(gameObject);
return;
}
Vector3 targetCurrentPos = target.transform.position;
Vector3 offset = targetCurrentPos - transform.position;
Vector3 flatOffset = new Vector3(offset.x, 0f, offset.z);
float step = speed * Time.deltaTime;
traveledDistance += step;
if (step >= flatOffset.magnitude || flatOffset.sqrMagnitude <= 0.05f)
{
HitTargetAndExecuteEffects(target);
return;
}
// 自然抛物线推进
float t = Mathf.Clamp01(traveledDistance / totalDistance);
Vector3 groundPos = Vector3.Lerp(new Vector3(startPosition.x, 0.1f, startPosition.z), new Vector3(targetCurrentPos.x, 0.1f, targetCurrentPos.z), t);
float startY = startPosition.y;
float targetY = targetCurrentPos.y + 0.8f;
float baseY = Mathf.Lerp(startY, targetY, t);
float arcY = 4f * 1.35f * t * (1f - t); // 1.35m 拱起高度
Vector3 nextPos = new Vector3(groundPos.x, baseY + arcY, groundPos.z);
// 矛头朝向飞行轨迹切线
Vector3 velocity = nextPos - transform.position;
if (velocity.sqrMagnitude > 1e-5f)
{
transform.rotation = Quaternion.LookRotation(velocity.normalized, Vector3.up);
}
transform.position = nextPos;
}
private void HitTargetAndExecuteEffects(GameObject hitTarget)
{
if (hasHit) return;
hasHit = true;
UnitBase targetUnit = hitTarget.GetComponentInParent<UnitBase>();
WorldHealthBar targetBar = hitTarget.GetComponentInParent<WorldHealthBar>();
if (targetBar == null && targetUnit != null)
{
targetBar = targetUnit.GetComponent<WorldHealthBar>();
}
float hpBefore = targetBar != null ? targetBar.currentHealth : 0f;
// 1. 造成伤害
if (targetUnit != null)
{
targetUnit.ReceiveDamage(damage, ownerUnit != null ? ownerUnit.gameObject : null);
}
else if (targetBar != null)
{
targetBar.TakeDamage(damage, ownerUnit != null ? ownerUnit.gameObject : null);
}
Debug.Log($"<color=yellow>【穿心猎矛】命中!</color> 目标: {hitTarget.name}, 承受伤害: {damage:F1} (目标血量: {hpBefore:F1} -> {(targetBar != null ? targetBar.currentHealth : 0f):F1})");
// 2. 6级解锁【破阵震退】:后仰强力击退 2.0 米(顺着投矛飞行方向向后推)
if (skillLevel >= 6 && hitTarget != null && hitTarget.activeInHierarchy)
{
Vector3 pushDir = (hitTarget.transform.position - startPosition);
pushDir.y = 0f;
if (pushDir.sqrMagnitude < 0.001f) pushDir = Vector3.forward;
pushDir.Normalize();
ApplySmoothKnockback(hitTarget, pushDir * knockbackDist);
}
// 3. 10级解锁【绝命猎杀】:若成功斩杀目标,立即返还 50% 技能能量
bool isKilled = (targetBar != null && (targetBar.IsDead || targetBar.currentHealth <= 0f)) || (targetUnit != null && targetUnit.IsDead);
if (skillLevel >= 10 && isKilled && ownerUnit != null)
{
WorldHealthBar ownerBar = ownerUnit.GetComponent<WorldHealthBar>();
if (ownerBar != null)
{
// 返还 50% 能量(即 50 点技能充能)
ownerBar.currentEnergy = Mathf.Clamp(ownerBar.currentEnergy + ownerBar.maxEnergy * 0.50f, 0f, ownerBar.maxEnergy);
Debug.Log($"<color=cyan>【绝命猎杀】成功斩杀后排目标!</color> 立即返还 50% 技能能量!(当前能量: {ownerBar.currentEnergy:F0}/{ownerBar.maxEnergy:F0})");
}
}
Destroy(gameObject);
}
private void ApplySmoothKnockback(GameObject victim, Vector3 displacement)
{
NavMeshAgent agent = victim.GetComponent<NavMeshAgent>();
Vector3 targetPos = victim.transform.position + displacement;
// 利用 NavMesh 采样保证不推出边界或障碍物
if (NavMesh.SamplePosition(targetPos, out NavMeshHit hit, 2.0f, NavMesh.AllAreas))
{
targetPos = hit.position;
}
if (agent != null && agent.enabled && agent.isOnNavMesh)
{
agent.Warp(targetPos);
}
else
{
victim.transform.position = targetPos;
}
Debug.Log($"<color=orange>【破阵震退】触发!</color> 目标 {victim.name} 被重矛强力震退 {displacement.magnitude:F1} 米!");
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: Ci9JsCyrAnOV0Wkgm0Ge0UhdD9F0uLHn/+8LRyJJlz3lAohHk0flNZI=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+58 -13
View File
@@ -5,6 +5,10 @@ public class Projectile : MonoBehaviour
[Header("爆炸效果(可选)")]
public GameObject explosionPrefab; // 爆炸特效预制体,留空则没有爆炸效果
[Header("抛物线飞行(可选)")]
public bool useParabola = false; // 是否启用小抛物线飞行
public float parabolaHeight = 1.0f; // 抛物线最高拱起高度 (不太高的抛物线)
private GameObject target;
private GameObject owner;
private float damage;
@@ -13,6 +17,9 @@ public class Projectile : MonoBehaviour
private bool registerEnergyOnHit;
private bool initialized;
private bool hasHit;
private Vector3 startPosition;
private float totalFlyDistance;
private float horizontalTraveled;
public void Initialize(
GameObject targetObject,
@@ -31,6 +38,19 @@ public class Projectile : MonoBehaviour
initialized = true;
hasHit = false;
startPosition = transform.position;
horizontalTraveled = 0f;
if (targetObject != null)
{
Vector3 diff = targetObject.transform.position - startPosition;
diff.y = 0f;
totalFlyDistance = Mathf.Max(0.1f, diff.magnitude);
}
else
{
totalFlyDistance = 10f;
}
// The projectile uses its own raycast hit check. Disable the collider so
// it cannot be destroyed or disturbed by the owner's launch socket.
foreach (var collider in GetComponentsInChildren<Collider>(true))
@@ -57,27 +77,56 @@ public class Projectile : MonoBehaviour
return;
}
// 目标根节点位于脚底,只取水平差值,让箭保持当前高度平行飞行。
Vector3 offset = target.transform.position - transform.position;
offset.y = 0f;
if (offset.sqrMagnitude <= 0.01f)
Vector3 targetCurrentPos = target.transform.position;
Vector3 offset = targetCurrentPos - transform.position;
Vector3 flatOffset = new Vector3(offset.x, 0f, offset.z);
if (flatOffset.sqrMagnitude <= 0.04f)
{
HitTarget(target);
return;
}
Vector3 direction = offset.normalized;
float distance = speed * Time.deltaTime;
if (distance >= offset.magnitude)
Vector3 direction = flatOffset.normalized;
float step = speed * Time.deltaTime;
horizontalTraveled += step;
if (step >= flatOffset.magnitude)
{
HitTarget(target);
return;
}
// 投射物保持水平飞行,并让根节点前方始终指向当前目标。
Vector3 nextPos;
if (useParabola && totalFlyDistance > 0.1f)
{
// 水平线性推进
float t = Mathf.Clamp01(horizontalTraveled / totalFlyDistance);
Vector3 groundPos = Vector3.Lerp(new Vector3(startPosition.x, 0.1f, startPosition.z), new Vector3(targetCurrentPos.x, 0.1f, targetCurrentPos.z), t);
// 抛物线高度:基础发射高度渐变 + 4 * h * t * (1 - t) 抛物线弧度
float startY = startPosition.y;
float targetY = targetCurrentPos.y + 0.8f;
float baseY = Mathf.Lerp(startY, targetY, t);
float arcY = 4f * parabolaHeight * t * (1f - t);
nextPos = new Vector3(groundPos.x, baseY + arcY, groundPos.z);
// 矛身旋转:朝向移动切线方向,矛头顺着抛物线弧度自然俯仰
Vector3 velocity = (nextPos - transform.position);
if (velocity.sqrMagnitude > 1e-6f)
{
transform.rotation = Quaternion.LookRotation(velocity.normalized, Vector3.up);
}
transform.position = nextPos;
}
else
{
// 水平直线飞行
transform.rotation = Quaternion.LookRotation(direction, Vector3.up);
transform.position += direction * step;
}
if (Physics.Raycast(transform.position, direction, out RaycastHit hit, distance))
if (Physics.Raycast(transform.position, direction, out RaycastHit hit, step))
{
TryHit(hit.collider.gameObject);
if (hit.collider.transform.root == target.transform.root)
@@ -85,10 +134,6 @@ public class Projectile : MonoBehaviour
return;
}
}
// 火球保持 Prefab 固定角度,不随飞行方向旋转
// transform.forward = direction;
transform.position += direction * distance;
}
private void OnTriggerEnter(Collider other)
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: XX5M4yuqBilSuftrblo47vfUuQWkvt3aRHWDJTmRuN14lSKAtACCuqY=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f94ec02294964701b2f32869f486556f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 11517f1b820a4b4d9ad956603e095731
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
+4 -1
View File
@@ -131,7 +131,8 @@
- [2026-10-03 23:38:14] DefenseTest场景已改造为开局布阵模式:玩家开局拖动英雄卡到3行6列后三排网格(BackZ=-15),点击开始战斗按钮后开始波次,每波结束英雄回到初始位置。不再预先配置阵容到JSON。已创建DefenseGameFlowController和GridLineVisualizer(红线可视化网格,Y=0.5)。StartBattleButton在BottomUI下。
- [2026-10-04 09:28:04] 2026-10-04 DefenseTest 开局卡牌拖动修复完成:根本原因是 BattleFormationSpawner 在 Start() 时自动生成英雄(法师/弓箭手),DefenseGameFlowController.InitializeCardDrag() 需要的 HeroRoster.asset 因损坏无法加载。修复方案:1) 重新创建 HeroRoster.asset 包含5个英雄并正确设置 unitPrefab 引用;2) 在场景中禁用 BattleFormationSpawner 组件,塔防版不需要自动生成初始英雄;3) DefenseGameFlowController.roster 字段在场景中配置 HeroRoster 引用。现在开局场上无单位,5张卡片均可拖动,HeroCardDrag 组件和 CanvasGroup 已自动配置。
- [2026-10-04 10:15:39] 2026-10-04 DefenseTest 布阵拖拽系统重做完成。DeployGrid 常量改为 6列×5行、ColStep=2.8、RowStep=3.0、BackZ=-9(旧值 -15 落在 NavMesh 之外,单位会卡住)。战场/部署网格 的30个格位由 DefenseGameFlowController.AlignGridCells 按命名「格位_行_列」自动摆到 DeployGrid 坐标,布阵阶段显示、开战隐藏。新增 DeployHighlight(绿=可放/红=已占用,公开 IsVisible/IsBlocked/ShownCell),HeroCardDrag 重写为「生成半透明英雄幽灵跟随指针 + 平面射线吸附格位」,DefenseGameFlowController 增加 Instance/IsDeployPhase/PlaceHeroFromCard/IsCellOccupied/IsCardPlaced/RemoveHeroAt,点击已放置英雄可撤回(Update 里 Physics.Raycast 命中 UnitBase)。场景新增 StartBattleButton(Canvas 根、bottom-center、y=360、圆角绿底),deploymentUI 必须保持 null——英雄卡面板战斗中要一直显示血量/复活。血条隐藏要操作 WorldHealthBar.Awake 生成的子物体 "WorldHealthBar",不是组件所在的对象。
- [2026-10-04 11:15:47] 2026-10-04 DefenseTest 布阵区域改为 4×4 并与用户新建的 Plane 完全重合。DeployGrid 常量:Cols=4、Rows=4、ColStep=2.875、RowStep=2.8、BackZ=-14.2、CellWidth=2.815、CellDepth=2.74、GridY=0.115、UnitY=0.10(对齐重烘后的 NavMesh)。Plane 原在 y=0.5 会挡住单位,已降到 y=0.09 并放入 Buildings 层(layer 8)排除烘焙;NavMeshSurface 体积改为 center=(0,1,12) size=(28,12,62) 重烘,NavMesh 高度由 0.16 变 0.095,DefenseWaveLevelController.spawnY 同步改为 0.1。开始游戏按钮改为顶部居中(anchor 上中、anchoredPosition y=-170、420×120)。注意:BattlePlatform 实际只覆盖 Z -22.8..17.2,所以 NavMesh 远端也就到 ~16.9,敌人 spawnZ=20 本身在地面之外(靠 NavMeshAgent 自动吸附),这是既有行为。
- [2026-10-14 00:09:44] 2026-10-04 起 DefenseTest 布阵区域,2026-10-14 由 4×4 改为 **5 列 × 4 行 = 20 格位**,与用户新建的布阵 Plane 完全重合。DeployGrid.cs(Assets/Scripts/数据脚本)常量:Cols=5、Rows=4、ColStep=2.30、RowStep=2.80、BackZ=-14.2、CellWidth=2.22、CellDepth=2.74、GridY=0.115、UnitY=0.10(对齐重烘后的 NavMesh),覆盖 X ∈ [-5.75, 5.75]、Z ∈ [-15.6, -4.4]。Plane y=0.09 放入 Buildings 层(layer 8)排除烘焙;NavMeshSurface 体积 center=(0,1,12) size=(28,12,62),NavMesh 高度 0.095,DefenseWaveLevelController.spawnY=0.1。开始游戏按钮顶部居中(anchor 上中、anchoredPosition y=-170、420×120)。注意:BattlePlatform 实际只覆盖 Z -22.8..17.2,NavMesh 远端约到 ~16.9,敌人 spawnZ=20 在地面之外(靠 NavMeshAgent 自动吸附),这是既有行为。
- [2026-10-04 13:12:11] 2026-10-04 英雄打完归位改为"走回去"(正常速度),去掉瞬移。关键坑:UnitBase.Start 里 `navAgent.stoppingDistance = attackRange*0.95` 会让 agent 在到达锚点前就认为"已到达"而停住(法师 5.7 米、盾卫 0.95 米都远大于 anchorArrivalDistance 0.35),所以"走回锚点"以前根本走不到——这正是当初只能瞬移的原因。修法:ReturnToAnchor 里把 stoppingDistance 设 0,RestoreIdleSpeed/move() 里恢复 NormalStoppingDistance。另新增 useAnchorLeash/anchorLeashDistance(英雄设为 10 米,DefenseGameFlowController.heroLeashDistance 控制),目标距锚点超过上限就不追,避免一路推到 Z≈16。DefenseGameFlowController.ResetHeroPositions 现在只清 target 让 UnitBase 自己走回,仅当 NavMesh.SamplePosition 找不到落脚点(真卡住)才瞬移兜底。
- [2026-10-04 14:12:16] 2026-10-04 DefenseTest 两处修正:1) 阵位守护距离不再单开字段,直接用 UnitBase.detectionRange(已删除 anchorLeashDistance / heroLeashDistance;DefenseGameFlowController 只留开关 heroGuardPost=true,新 bool 字段在旧场景里会反序列化成 false,必须显式写进场景)。出战 5 个英雄 Prefab 的 detectionRange 已从 30/50 调到 10(弓箭手 12)。2) 底部英雄卡的角色改回从 PlayerData.json 的 currentDeck 读(站位不再读),卡面(头像/名字/稀有度)用同一份 CharacterData 刷新(新增 HeroCardUI.SetCharacterInfo,区别于绑定单位的 SetHero),否则会出现「卡面显示人类士兵、拖出来却是法师」的不一致;PlayerData 读不到时兜底用 HeroRoster。注意 CharacterData 里有些角色(荒野之王/荒野流寇等)unitPrefab 为空,不能出战,取阵容时要跳过。
- [2026-10-04 23:19:03] - [2026-10-04 22:20:00] CharacterData 真实字段名(猜错会导致 exec_editor_script 编译失败):baseMaxHealth / baseAttackPower / baseMoveSpeed / healthPerLevel / attackPerLevel / moveSpeedPerLevel / characterId / characterName / cardIcon / rarity / unitPrefab / description。**不存在** baseHealth / baseAttack。UnitBase 的“角色数据”字段是字符串 characterDataName,运行时 Resources.Load<CharacterData>($"Data/{name}"),资产放在 Assets/Resources/Data。
@@ -158,6 +159,8 @@
- [2026-10-12 17:01:19] 2026-10-12 法师重构为阶梯技能体系 (CastleMageSkill.cs),包含 FireballSharpMissileFire 飞弹、MagicExplosionFire 爆破及 FireFieldRed 地面持续灼烧火海特效。
- [2026-10-12 22:31:36] 2026-10-12 精锐士兵刺客重构完毕:EliteSoldierSkill.cs 实现1级直接飞天斩后排(跃起劈砍.fbx第0帧立刻起跳、0.95s第30帧精准落地扑向敌方最远后排重劈200%);3级250%伤害且落地+35%移速;6级影袭破防眩晕1.2s;10级击杀目标后0.25s立即再次腾空连斩下一个后排(最多3连斩)。飞跃期间必须关闭 animator.applyRootMotion = false 与 navAgent.enabled = false,彻底消除动画根运动与抛物线位移打架造成的连斩异常漂移。
- [2026-10-13 15:47:12] 2026-10-12 第二章原弓箭猎人重构为荒野猎手(投矛手):远程投掷重矛,核心技能锁定大范围内距离最远的目标超远狙杀(越远伤害越高),6级升级为直线贯穿+最远目标击退2米(移除眩晕),10级击杀返还50%能量与范围爆裂。文档已同步更新。
- [2026-10-13 23:28:05] 2026-10-13 新英雄荒野猎手基础搭建完成:制作矛预制体 (Assets/Prefabs/武器飞行物/矛.prefab),Projectile 支持抛物线投掷 (useParabola=true, parabolaHeight=1.0m,飞行中根据轨迹切线自动俯仰矛头);创建荒野猎手Data.asset与预制体 (Assets/Prefabs/第二章/荒野猎手.prefab),挂载CharacterController、NavMeshAgent、WorldHealthBar、StatusEffectController、UnitTeam、UnitBase;攻击类型为RangedProjectile,射程6m,投矛出生点绑定右手骨骼下的pos节点。PlayMode投矛抛物线轨迹验证通过。
- [2026-10-13 23:54:42] 2026-10-13 荒野猎手阶梯技能实装完毕:文档与WildHunterSkill.cs已更新。按需求移除6级穿透杂兵伤害与10级群体爆裂;1级穿心猎矛自动制导后排最远目标(每米+5%伤害上限+45%);3级速度+40%、暴击+20%、伤害230%;6级后排目标后仰击退2.0米(NavMesh.Warp安全后推,无眩晕);10级伤害340%且斩杀立即返还50%技能能量;技能重矛挂载SparkleMissileYellow金色流光拖尾粒子。全流程PlayMode测试验证通过。
### Reference
- [2026-09-09 12:23:17] 飞行物脚本 Projectile.cs 负责锁敌追踪、碰撞检测和伤害结算。箭矢预制体 ArrowProjectile_White.prefab 已配置 Projectile 组件和 CapsuleCollider(Is Trigger)。远程单位需在攻击动画松弦帧添加 OnAttackEffect Event,并在 UnitBase 中设置 attackType=RangedProjectile、projectilePrefab、projectileSpawnPoint。
+1 -1
View File
@@ -44,7 +44,7 @@
- 竖版 9:16;沿用现有正交俯视相机方案(正交、约 54°,orthoSize 16);
- 战场为纵向长方形,敌人在 Z 轴正方向(上方)生成,己方在 Z 轴负方向(下方);
- **部署区 = 战场下方约 1/3 的网格**(DefenseTest 场景已建:5 行 × 6 列 = 30 格位,行距 3 / 列距 2.8,覆盖 Z ∈ [-5.35, 9.35]、X ∈ [-8.25, 8.25],约占可见深度 37%);
- **部署区 = 战场下方约 1/3 的网格**(DefenseTest 场景已建:5 列 × 4 行 = 20 格位,列距 2.3 / 行距 2.8,覆盖 Z ∈ [-15.6, -4.4]、X ∈ [-5.75, 5.75],与布阵 Plane 完全重合);
- **默认摆放规则**:近战在前排(靠近敌人一侧)、远程 / 法师在后排;玩家可手动改;
- **部署流程**:卡组编辑页选卡 → 点「编排阵型」→ 阵型编排页拖拽 5 张卡到格位 → 进入战斗直接开打;
- 出战英雄数量默认 5,数据结构支持可变(关卡 / 玩法可指定上限);
+2 -2
View File
@@ -138,7 +138,7 @@ CharacterData 基础属性
### 第二章英雄
- 狂暴狼人:快速近战,依靠攻速和持续输出压制敌人。
- 荒野猎手:远程重矛,锁定大范围内最远距离的敌方目标,后排狙杀与直线击退贯穿(原弓箭猎人)。
- 荒野猎手:远程重矛,锁定大范围内最远距离的敌方目标,后排高伤狙杀与强力后仰击退(原弓箭猎人)。
- 石巨人:高生命重型前排,拥有范围控制能力。
- 荒野祭司:辅助治疗和范围支援,后续制作。
- 荒野之王:大型精英前排,作为章节 Boss 或高阶英雄,后续制作。
@@ -332,7 +332,7 @@ UnitBase
| 英雄 | 1级 (基础解锁) | 3级 (数值强化) | 6级 (机制质变 · 核心好玩点) | 10级 (终极质变大招 · 攻防高光) |
|---|---|---|---|---|
| **荒野猎手**<br>*(远程重矛/后排狙杀)* | **穿心猎矛**:锁定大范围内**距离自身最远的敌方目标**,蓄力掷出重型猎矛造成 **180% 物理伤害**;且**距离越远伤害越高**(每相距 1 米额外提升 4% 伤害,最高 +36%)! | 飞矛飞行速度 +40%,基础伤害提升至 **220%**,暴击率额外 **+20%** | **定身震荡**:重矛沿途穿透直线上的所有杂兵(造成 70% 贯穿伤害);命中最终的最远目标时,**将其向后强力击退 2.0 米**(纯击退拉扯,无眩晕冗余),打乱后排阵型! | **绝命狩猎**:飞矛附带风暴贯击,基础伤害提升至 **320% 毁灭打击**;**若成功击杀目标,立即返还 50% 技能能量**,并在倒下位置引发骨片爆裂,对周围 2 米造成 100% 范围物理伤害! |
| **荒野猎手**<br>*(远程重矛/后排狙杀)* | **穿心猎矛**:蓄力重投飞矛,自动锁定全场**距离自身最远的目标(优先狙杀敌方后排)**,造成 **180% 物理伤害**;且**距离越远伤害越高**(每相距 1 米额外提升 5% 伤害,最高 +45%)!带有金色破空流光特效! | 飞矛飞行速度 +40%,基础伤害提升至 **230%**,暴击率额外 **+20%**,远距离狙杀威慑力大增! | **破阵震退**:蓄力重矛命中目标时产生破空震荡,**将其向后强力击退 2.0 米**(纯物理后退,打乱敌方后排阵型,且不产生眩晕冗余)! | **绝命猎杀**:飞矛附带风暴雷霆之势,基础伤害飙升至 **340% 极限制导高伤**;**若成功斩杀目标,立即返还 50% 技能能量**,快速准备下一发致命狙杀! |
| **狂暴狼人**<br>*(极速刺客/嗜血续航)* | **野性狼嚎**:仰天长嚎激活狼性血脉,自身**攻速飙升 +45%(持续 4 秒)** | 攻速提升幅度增加至 **60%**,狼嚎持续时间延长至 5.5 秒 | **残虐撕裂**:狼嚎期间利爪撕裂伤口,**每次普攻恢复造成伤害 25% 的生命值**,并在敌人身上留下每秒 20% 的流血! | **血性狂欢**:狼嚎期间只要击杀敌人,**立即刷新重置 4 秒狼嚎持续时间**并额外获得 20% 移速与攻击力,在敌群中连续疯狂撕扯! |
| **石巨人**<br>*(重装控制/护盾控场)* | **大地震击**:双拳重拍地面激发环形震荡波(`ShockwaveRing`),对周围 3.5 米造成伤害并**眩晕 1.5 秒**(`StunStars`) | 眩晕时间延长至 **2.0 秒**,震荡波伤害与范围 +25% | **坚石护体**:重拍地面击碎岩石吸附自身,拍地瞬间**获得相当于 30% 最大生命值的坚固护盾**(挂 `MagicShieldBlue`) | **天崩地裂**:拍击激起全场强震,震晕周围敌人后在地面留下震裂泥沼,**使周围所有敌人移速降低 60% 持续 4 秒**,且自身受到伤害降低 30%! |
| **蓝色怪物**<br>*(控场反制/元素护盾)* | **寒霜扑击**:蓄力飞扑目标,造成 140% 单体伤害并使目标**攻击速度降低 35%(持续 3 秒)** | 飞扑伤害提升至 **180%**,攻速降低效果提升至 45% | **霜甲反伤**:扑击后生成持续 5 秒的极寒霜甲(自身最大血量 25% 护盾),**任何近战攻击蓝色怪物的敌人都将被减速 40%**! | **极寒爆裂**:扑击命中目标后引发暴风雪炸裂,对周围 3 米范围内所有敌人施加 **1.5 秒冰冻眩晕**(挂 `StunStars`),强力打散敌方攻势! |
+1 -1
View File
@@ -23,7 +23,7 @@
建议保留:
- 己方部署区:约 5 行 × 6 列网格,共 30 个可用格位。
- 己方部署区:5 列 × 4 行网格,共 20 个可用格位。
- 默认出战英雄:5 个。
- 敌方生成区:战场上方,按波次从不同列生成。
- 中央交战区:保持开阔,用于英雄自动走位和攻击。