eeaf8a4247
BLENDER (5 new/re-authored clips, all full-body, mirrored-left-arm axes FIXED - Synty L shoulders mirror X/twist vs R, verified by axis probes): - A_Swing_R2L / A_Swing_L2R (0.47s): horizontal slash + backhand with real anticipation (torso wound 25 deg), 2-frame strikes, follow-through past the target. - A_Swing_Finisher (0.60s): overhead crash with a crouch drop into impact. - A_Special_Slam (0.53s): two-handed ground slam - the Warrior cone finally LOOKS like a cone attack. - A_Fire_OneHand re-authored punchier (cock -> full-extension thrust with torso commit -> recoil kick). Export lesson: Blender 4.4 slotted actions - reassigning animation_data. action does NOT bind the slot; force animation_data.action_slot before export/render or you bake a stale pose. CONTROLLER: MeleeSwing (one clip for everything) replaced by Swing1/2/3 keyed on new ComboStep int param (replicated MeleeCombo.Step); Fire gated !IsCone (Ranger shot), new SpecialSlam state on IsFiring+IsCone (Warrior). DRIVE SYSTEM: writes ComboStep from the replicated combo step and IsCone from the replicated AbilityRef -> AbilityDatabase blob archetype (works for remote teammates too). SWORD: SM_Wep_Sword_01 (SciFiSpace - same pack/atlas as the soldier) as a mesh-sub-asset child of Hand_R, grip rot (90,0,0) tuned live against the running entity. Required RigDefinitionAuthoring boneEntityStrippingMode Automatic -> None so the hand bone entity exists + is posed (stripped bones never animate attachments). Play-verified: the energy blade rides the fist. 456/456 EditMode. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
144 lines
3.7 KiB
YAML
144 lines
3.7 KiB
YAML
fileFormatVersion: 2
|
|
guid: 594271330704f684e85012825546489b
|
|
ModelImporter:
|
|
serializedVersion: 24501
|
|
internalIDToNameTable: []
|
|
externalObjects: {}
|
|
materials:
|
|
materialImportMode: 2
|
|
materialName: 0
|
|
materialSearch: 1
|
|
materialLocation: 1
|
|
searchTexturesGlobally: 0
|
|
animations:
|
|
legacyGenerateAnimations: 4
|
|
bakeSimulation: 0
|
|
resampleCurves: 1
|
|
optimizeGameObjects: 0
|
|
removeConstantScaleCurves: 0
|
|
motionNodeName:
|
|
animationImportErrors:
|
|
animationImportWarnings:
|
|
animationRetargetingWarnings:
|
|
animationDoRetargetingWarnings: 0
|
|
importAnimatedCustomProperties: 0
|
|
importConstraints: 0
|
|
animationCompression: 1
|
|
animationRotationError: 0.5
|
|
animationPositionError: 0.5
|
|
animationScaleError: 0.5
|
|
animationWrapMode: 0
|
|
extraExposedTransformPaths: []
|
|
extraUserProperties: []
|
|
clipAnimations:
|
|
- serializedVersion: 16
|
|
name: A_Swing_Finisher
|
|
takeName: Scene
|
|
internalID: -623603649343465320
|
|
firstFrame: 0
|
|
lastFrame: 18
|
|
wrapMode: 0
|
|
orientationOffsetY: 0
|
|
level: 0
|
|
cycleOffset: 0
|
|
loop: 0
|
|
hasAdditiveReferencePose: 0
|
|
loopTime: 0
|
|
loopBlend: 0
|
|
loopBlendOrientation: 1
|
|
loopBlendPositionY: 1
|
|
loopBlendPositionXZ: 1
|
|
keepOriginalOrientation: 1
|
|
keepOriginalPositionY: 1
|
|
keepOriginalPositionXZ: 1
|
|
heightFromFeet: 0
|
|
mirror: 0
|
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
|
curves: []
|
|
events: []
|
|
transformMask: []
|
|
maskType: 3
|
|
maskSource: {instanceID: 0}
|
|
additiveReferencePoseFrame: 0
|
|
isReadable: 0
|
|
meshes:
|
|
lODScreenPercentages: []
|
|
globalScale: 1
|
|
meshCompression: 0
|
|
addColliders: 0
|
|
useSRGBMaterialColor: 1
|
|
sortHierarchyByName: 1
|
|
importPhysicalCameras: 1
|
|
importVisibility: 1
|
|
importBlendShapes: 1
|
|
importCameras: 1
|
|
importLights: 1
|
|
nodeNameCollisionStrategy: 1
|
|
fileIdsGeneration: 2
|
|
swapUVChannels: 0
|
|
generateSecondaryUV: 0
|
|
useFileUnits: 1
|
|
keepQuads: 0
|
|
weldVertices: 1
|
|
bakeAxisConversion: 0
|
|
preserveHierarchy: 0
|
|
skinWeightsMode: 0
|
|
maxBonesPerVertex: 4
|
|
minBoneWeight: 0.001
|
|
optimizeBones: 1
|
|
generateMeshLods: 0
|
|
meshLodGenerationFlags: 0
|
|
maximumMeshLod: -1
|
|
importUVs: -1
|
|
importVertexColors: 1
|
|
meshOptimizationFlags: -1
|
|
indexFormat: 0
|
|
secondaryUVAngleDistortion: 8
|
|
secondaryUVAreaDistortion: 15.000001
|
|
secondaryUVHardAngle: 88
|
|
secondaryUVMarginMethod: 1
|
|
secondaryUVMinLightmapResolution: 40
|
|
secondaryUVMinObjectScale: 1
|
|
secondaryUVPackMargin: 4
|
|
useFileScale: 1
|
|
strictVertexDataChecks: 0
|
|
tangentSpace:
|
|
normalSmoothAngle: 60
|
|
normalImportMode: 0
|
|
tangentImportMode: 3
|
|
normalCalculationMode: 4
|
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
|
blendShapeNormalImportMode: 1
|
|
normalSmoothingSource: 0
|
|
calculateBlendshapeNormalsDeltaFromImportedNormals: 0
|
|
referencedClips: []
|
|
importAnimation: 1
|
|
humanDescription:
|
|
serializedVersion: 3
|
|
human: []
|
|
skeleton: []
|
|
armTwist: 0.5
|
|
foreArmTwist: 0.5
|
|
upperLegTwist: 0.5
|
|
legTwist: 0.5
|
|
armStretch: 0.05
|
|
legStretch: 0.05
|
|
feetSpacing: 0
|
|
globalScale: 1
|
|
rootMotionBoneName:
|
|
hasTranslationDoF: 0
|
|
hasExtraRoot: 0
|
|
skeletonHasParents: 1
|
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
|
autoGenerateAvatarMappingIfUnspecified: 1
|
|
animationType: 3
|
|
humanoidOversampling: 1
|
|
avatarSetup: 1
|
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
|
importBlendShapeDeformPercent: 1
|
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
|
additionalBone: 0
|
|
userData:
|
|
assetBundleName:
|
|
assetBundleVariant:
|