WL #948-6 마법검·오브 PD 재지적 3건 — ① 지팡이 끝 점광원 범위 0.8 → 0.3 m(바닥 반사 제거 · 세기 1.2) ② 3타 = Mage@RangeAttack2 f16~46 거울(mirror · 빈 왼손 앞 0.3 m 뻗기 · 상체 숙임 0.04 · 뻗은 채 약 0.5 s 고정 · 발사 0.35) — 매핑 행 mirror 신설(CombatAnimMapping.cs · WL_CombatAnimSetup state.mirror) ③ 오브(맹약 1057) 고리 circle 이 오브 옆 +0.727 에 있던 것 → WLOrbFloat centerChildren(부착 때 자식 로컬 위치 0 · 고리-오브 거리 0.000 실측)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
ce866cb7fc
commit
34181e6e8e
|
|
@ -149,6 +149,7 @@ public static class WL_CombatAnimSetup
|
|||
{
|
||||
state.motion = clip;
|
||||
if (st.speed > 0f) state.speed = st.speed; // #834 상태 재생 속도(비수 3타 등)
|
||||
if (state.mirror != (st.mirror != 0)) { state.mirror = st.mirror != 0; state.mirrorParameterActive = false; sb.AppendLine(" 거울 = " + (st.mirror != 0 ? "켬" : "끔") + " → " + state.name); } // #948-6 빈손 내뻗기(오른손 클립 거울)
|
||||
touchedStates++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,14 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7a1612ec6fd9fbf4b917575b7c1ecdcb
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 39519
|
||||
packageName: Mage Warrior Mecanim Animation Pack
|
||||
packageVersion: 2.4.1
|
||||
assetPath: Assets/ExplosiveLLC/Mage Warrior Mecanim Animation Pack/Animations/Mage@RangeAttack2.FBX
|
||||
uploadId: 754788
|
||||
ModelImporter:
|
||||
serializedVersion: 25
|
||||
serializedVersion: 24300
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
1: 100000
|
||||
|
|
@ -467,18 +474,18 @@ ModelImporter:
|
|||
second: Mesh-Staff
|
||||
externalObjects: {}
|
||||
materials:
|
||||
importMaterials: 0
|
||||
materialImportMode: 0
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 0
|
||||
searchTexturesGlobally: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName: Motion
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
|
|
@ -644,6 +651,49 @@ ModelImporter:
|
|||
maskType: 0
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
- serializedVersion: 16
|
||||
name: StaffCast3_S_10302
|
||||
takeName: Take 001
|
||||
internalID: 1827226128182048838
|
||||
firstFrame: 16
|
||||
lastFrame: 46
|
||||
wrapMode: 0
|
||||
orientationOffsetY: 0
|
||||
level: 0
|
||||
cycleOffset: 0
|
||||
loop: 0
|
||||
hasAdditiveReferencePose: 0
|
||||
loopTime: 0
|
||||
loopBlend: 0
|
||||
loopBlendOrientation: 1
|
||||
loopBlendPositionY: 1
|
||||
loopBlendPositionXZ: 0
|
||||
keepOriginalOrientation: 1
|
||||
keepOriginalPositionY: 1
|
||||
keepOriginalPositionXZ: 1
|
||||
heightFromFeet: 0
|
||||
mirror: 0
|
||||
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||
curves: []
|
||||
events:
|
||||
- time: 0
|
||||
functionName: LookAtTarget
|
||||
data:
|
||||
objectReferenceParameter: {instanceID: 0}
|
||||
floatParameter: 0
|
||||
intParameter: 0
|
||||
messageOptions: 0
|
||||
- time: 0.35
|
||||
functionName: Projectile
|
||||
data: Projectile_10302
|
||||
objectReferenceParameter: {instanceID: 0}
|
||||
floatParameter: 0
|
||||
intParameter: 0
|
||||
messageOptions: 0
|
||||
transformMask: []
|
||||
maskType: 0
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
isReadable: 1
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
|
|
@ -651,26 +701,39 @@ ModelImporter:
|
|||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importPhysicalCameras: 1
|
||||
importVisibility: 0
|
||||
importBlendShapes: 0
|
||||
importCameras: 0
|
||||
importLights: 0
|
||||
nodeNameCollisionStrategy: 0
|
||||
fileIdsGeneration: 1
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 0
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -1
|
||||
meshOptimizationFlags: 0
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 0
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 0
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 2
|
||||
|
|
@ -681,7 +744,6 @@ ModelImporter:
|
|||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
copyAvatar: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human:
|
||||
|
|
@ -1390,16 +1452,14 @@ ModelImporter:
|
|||
skeletonHasParents: 0
|
||||
lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: 7c72ed3f90575084c9f3b5b585887182,
|
||||
type: 3}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 3
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 2
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 0
|
||||
importBlendShapeDeformPercent: 0
|
||||
remapMaterialsIfMaterialImportModeIsNone: 1
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 39519
|
||||
packageName: Mage Warrior Mecanim Animation Pack
|
||||
packageVersion: 2.4.1
|
||||
assetPath: Assets/ExplosiveLLC/Mage Warrior Mecanim Animation Pack/Animations/Mage@RangeAttack2.FBX
|
||||
uploadId: 754788
|
||||
|
|
|
|||
|
|
@ -2303,7 +2303,7 @@ AnimatorState:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: attack3
|
||||
m_Speed: 0.7
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 7396964718502629461}
|
||||
|
|
@ -2311,12 +2311,12 @@ AnimatorState:
|
|||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_Mirror: 1
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 3060872287085348379, guid: 8b4aea68a09b24149ab89408f7199bb1,
|
||||
m_Motion: {fileID: 1827226128182048838, guid: 7a1612ec6fd9fbf4b917575b7c1ecdcb,
|
||||
type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
|
|
|
|||
|
|
@ -984,16 +984,17 @@ MonoBehaviour:
|
|||
intParameter: 0
|
||||
floatParameter: 0
|
||||
- stateName: attack3
|
||||
sourceFbxPath: Assets/ExplosiveLLC/RPG Character Mecanim Animation Pack FREE/Animations/Unarmed/RPG-Character@Unarmed-Attack-R2.FBX
|
||||
sourceFbxPath: Assets/ExplosiveLLC/Mage Warrior Mecanim Animation Pack/Animations/Mage@RangeAttack2.FBX
|
||||
subClipName: StaffCast3_S_{CID}
|
||||
sourceClipName:
|
||||
incomingExitTime: 0.85
|
||||
createIfMissing: 1
|
||||
firstFrame: 0
|
||||
lastFrame: 13
|
||||
speed: 0.7
|
||||
firstFrame: 16
|
||||
lastFrame: 46
|
||||
speed: 1
|
||||
maskPath:
|
||||
bakeRootY: -1
|
||||
mirror: 1
|
||||
events:
|
||||
- functionName: LookAtTarget
|
||||
time: 0
|
||||
|
|
@ -1005,7 +1006,7 @@ MonoBehaviour:
|
|||
- functionName: Projectile
|
||||
time: 0
|
||||
useNormalized: 1
|
||||
normalizedTime: 0.72
|
||||
normalizedTime: 0.35
|
||||
stringParameter: Projectile_{CID}
|
||||
intParameter: 0
|
||||
floatParameter: 0
|
||||
|
|
|
|||
|
|
@ -93,6 +93,9 @@ namespace WL.Combat
|
|||
[Tooltip("#948 임포터 「Root Transform Position (Y) → Bake Into Pose」: -1 = 원본 클립 설정 그대로 · 0 = 끔(위아래 움직임이 포즈에서 빠져 루트모션으로 → PC 는 Y 루트모션을 버리므로 점프가 사라진다) · 1 = 켬")]
|
||||
public int bakeRootY = -1;
|
||||
|
||||
[Tooltip("#948-6 애니메이터 상태 거울(AnimatorState.mirror · humanoid 왼손↔오른손): 0 = 그대로 · 1 = 거울. 오른손 동작 클립을 「지팡이를 들지 않은 손」 동작으로 쓸 때(지팡이 3타 = Mage@RangeAttack2 거울)")]
|
||||
public int mirror;
|
||||
|
||||
public List<AnimEventSpec> events = new List<AnimEventSpec>();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,5 +10,7 @@
|
|||
"bobHz": 1.0,
|
||||
"spinDegPerSec": 40.0,
|
||||
"tiltDeg": 0.0,
|
||||
"centerChildren": 1,
|
||||
"_note_948_6": "#948-6 PD 「감싸는 이펙트가 오브 위치와 어긋남 → 오브가 정중앙 · 감싸는 이펙트가 오브를 중점으로」 — 원본 Orb 프리팹의 고리(circle · Cylinder001 메시 입자)가 로컬 +0.727 옆에 있어 오브(inner_glow · 원점)를 중심으로 돌지 않았다(실측) → 부착 때 직접 자식 로컬 위치 0",
|
||||
"note": "#944 PD 「오브(손에 빛나는 원형 이펙트)의 크기를 눈에 띄게 5배 키워줘」 + 레퍼런스(펼친 손바닥 위에 떠서 천천히 흔들리는 빛 고리 · 아트는 무시 · 위치·동작만) — 맹약(1057 · 10301) 무기 Orb 프리팹을 WLWeaponFitter 보정 뒤 ×5 · 손 소켓 위 0.25 m 부유(흔들림 0.04 m · 1 Hz · 회전 40°/s). 값은 Play 실측 뒤 보정."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,9 @@
|
|||
"pulseSeconds": 1.6,
|
||||
"light": 1,
|
||||
"lightColor": [ 1.0, 0.78, 0.42, 1.0 ],
|
||||
"lightRange": 0.8,
|
||||
"lightIntensity": 0.6,
|
||||
"lightRange": 0.3,
|
||||
"lightIntensity": 1.2,
|
||||
"_note_948_6": "#948-6 PD 「광원이 바닥에 반사되지 않도록 — 지팡이만 빛나게」 → 점광원 범위 0.8 → 0.3 m(머리 표면 0.08 m 만 닿고 바닥(약 1 m 아래)엔 못 미침) · 세기 1.2 로 머리 밝기 유지",
|
||||
"tipPull": 0.08,
|
||||
"cameraPull": 0.10,
|
||||
"_note_948_5": "#948-5 PD 「둥근 부분이 특정 공격 중에만 잠시 빛나고 평소엔 꺼짐」 = 사본 구슬 입자가 1 s 주기 · 수명 0~1.01 s · 크기 0~1.0 무작위(원본 팩 = 1회성 획득 연출)라 깜빡였다(실측) · 「둥근 이펙트 오브젝트가 튀어나와 있는데 둥근 부분에 항상 가려지면」 → 구슬 렌더러 끔(사본 WL_Fx_TipMarble 루트) · 남는 것 = 부드러운 빛무리(aura · 시작 크기 ×2.07 = 머리보다 조금 큰 0.2~0.27 m) + 반짝이 + 점광원(0.6) · 홀더 = 머리 중심(tipPull 0.08 = 머리 반지름 실측 0.099 × 손 배율) 에서 카메라 쪽 0.10 m(cameraPull · 빛무리가 머리 앞에 그려져 머리 자체가 빛나 보임 · 단단한 물체 없음)"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ namespace WL.Combat.Weapon
|
|||
public float bobHz = 1.0f; // 흔들림 주기(초당)
|
||||
public float spinDegPerSec = 40f; // 월드 위 축 회전
|
||||
public float tiltDeg = 0f; // 고리를 눕히는 각(0 = 프리팹 그대로)
|
||||
public int centerChildren = 0; // #948-6 1 = 오브 프리팹 직접 자식(circle 고리 등)의 로컬 위치를 0 으로 — 감싸는 이펙트가 오브 중심을 돈다(원본 circle 은 +0.727 옆에 있어 어긋남)
|
||||
public string note = "";
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +61,9 @@ namespace WL.Combat.Weapon
|
|||
f = weapon.gameObject.AddComponent<WLOrbFloat>();
|
||||
f._socket = weapon.parent; f._pc = f._socket != null ? f._socket.root : null; f._baseScale = weapon.localScale; f._t0 = Time.time;
|
||||
weapon.localScale = f._baseScale * Mathf.Max(0.01f, c.scaleMul);
|
||||
Attached++; LastLog = "오브 부착 " + n + " 소켓=" + (f._socket != null ? f._socket.name : "-") + " 크기 ×" + c.scaleMul + " 높이 " + c.hoverHeight;
|
||||
int centered = 0;
|
||||
if (c.centerChildren != 0) for (int i = 0; i < weapon.childCount; i++) { var ch = weapon.GetChild(i); if (ch.localPosition.sqrMagnitude > 1e-6f) { ch.localPosition = Vector3.zero; centered++; } } // #948-6 감싸는 고리를 오브 중심으로
|
||||
Attached++; LastLog = "오브 부착 " + n + " 소켓=" + (f._socket != null ? f._socket.name : "-") + " 크기 ×" + c.scaleMul + " 높이 " + c.hoverHeight + (centered > 0 ? " · 자식 중심 " + centered : "");
|
||||
return true;
|
||||
}
|
||||
catch (System.Exception ex) { LastLog = "오브 부착 실패 — " + ex.Message; return false; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue