WL #966 PD 지시 5건 + 추가 1 — ① 비수 1·2타 검기 = 대상 쪽으로(SlashTrailSettings arcAimStages · 호 가운데를 호 면 안에서 대상 방향으로 · 실측 0°/6°) ② 3타 2회전(몸 −720°/0.45 s · 매핑 두 번째 ShowEffect n 0.45 floatParameter 180 = 반대편 검기 · keepTrail 연출 묶음 · 3타→4타 0.55→0.8) ③ 주력 사본에 기본 검기 하이라이트 층(slash_add 녹색 · 분출·회전 복사 WL_add_1/2) ④ 각성 = 시전 동작 ass_cast(skill2 프레임 2~7 · 0.35배) + 시전 이펙트 WL_Fx_DaggerCast(HCFX_Energy_01 사본 · SkillCast · 스킬별 시전 이펙트 칸) · SkillList 703206 ass_cast→ass_skill2 · 시전 0.5 s · lockUntilFire · 등장 = 이펙트 끝 − 0.3 s(실측 숨김 1.07 s · 마지막 입자보다 0.23 s 먼저) ⑤ 메테오 연기 = 원본 HCFX 연기 설정 + 밝은 반투명 색 · 폭발 조각 검정 키 → 밝은 회색 ⑥ 메테오 fx 0.3 → 0.45(1.5배)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
7e7236b720
commit
be34565935
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0add9192c812d8044bdfed59dbd742fb
|
||||
ModelImporter:
|
||||
serializedVersion: 22200
|
||||
serializedVersion: 24300
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
74: 1827226128182048838
|
||||
|
|
@ -12,6 +12,7 @@ ModelImporter:
|
|||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
searchTexturesGlobally: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
|
|
@ -19,8 +20,6 @@ ModelImporter:
|
|||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
|
|
@ -71,6 +70,35 @@ ModelImporter:
|
|||
maskType: 3
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
- serializedVersion: 16
|
||||
name: AssCast_S_10202
|
||||
takeName: Take 001
|
||||
internalID: -998496362607748373
|
||||
firstFrame: 2
|
||||
lastFrame: 7
|
||||
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: []
|
||||
transformMask: []
|
||||
maskType: 3
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
|
|
@ -97,6 +125,9 @@ ModelImporter:
|
|||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
|
|
|
|||
|
|
@ -123,6 +123,13 @@ ModelImporter:
|
|||
floatParameter: 0
|
||||
intParameter: 0
|
||||
messageOptions: 0
|
||||
- time: 0.45
|
||||
functionName: ShowEffect
|
||||
data: Effect_Slash_10202_3
|
||||
objectReferenceParameter: {instanceID: 0}
|
||||
floatParameter: 180
|
||||
intParameter: 1
|
||||
messageOptions: 0
|
||||
transformMask: []
|
||||
maskType: 3
|
||||
maskSource: {instanceID: 0}
|
||||
|
|
|
|||
|
|
@ -2460,6 +2460,9 @@ AnimatorStateMachine:
|
|||
- serializedVersion: 1
|
||||
m_State: {fileID: 1928427296861903119}
|
||||
m_Position: {x: 15, y: -105, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1265087037476233727}
|
||||
m_Position: {x: 520, y: 420, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
|
|
@ -2692,6 +2695,33 @@ AnimatorStateTransition:
|
|||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &1265087037476233727
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ass_cast
|
||||
m_Speed: 0.35
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -998496362607748373, guid: 0add9192c812d8044bdfed59dbd742fb,
|
||||
type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1928427296861903119
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
|
|
@ -2784,7 +2814,7 @@ AnimatorStateTransition:
|
|||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.15
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.55
|
||||
m_ExitTime: 0.8
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
|
|
|
|||
|
|
@ -624,6 +624,13 @@ MonoBehaviour:
|
|||
stringParameter: Effect_Slash_{CID}_3
|
||||
intParameter: 1
|
||||
floatParameter: 0
|
||||
- functionName: ShowEffect
|
||||
time: 0
|
||||
useNormalized: 1
|
||||
normalizedTime: 0.45
|
||||
stringParameter: Effect_Slash_{CID}_3
|
||||
intParameter: 1
|
||||
floatParameter: 180
|
||||
- functionName: Move
|
||||
time: 0
|
||||
useNormalized: 1
|
||||
|
|
@ -642,7 +649,7 @@ MonoBehaviour:
|
|||
sourceFbxPath: Assets/Res_Addr/Animations/Animation/Assassin/Stander@DualBlades_Attack3.FBX
|
||||
subClipName: Attack4_S_{CID}
|
||||
sourceClipName:
|
||||
incomingExitTime: 0.55
|
||||
incomingExitTime: 0.8
|
||||
createIfMissing: 0
|
||||
firstFrame: -1
|
||||
lastFrame: 26
|
||||
|
|
@ -686,6 +693,16 @@ MonoBehaviour:
|
|||
lastFrame: 36
|
||||
speed: 1
|
||||
events: []
|
||||
- stateName: ass_cast
|
||||
sourceFbxPath: Assets/Res_Addr/Animations/Animation/Assassin/skill2.FBX
|
||||
subClipName: AssCast_S_{CID}
|
||||
sourceClipName:
|
||||
incomingExitTime: 0
|
||||
createIfMissing: 0
|
||||
firstFrame: 2
|
||||
lastFrame: 7
|
||||
speed: 0.35
|
||||
events: []
|
||||
- classId: 10201
|
||||
note: "\uB2E8\uAC80 \xB7 BladeDancer \u2192 Ninja Warrior pack (3\uD0C0 \uBE60\uB978
|
||||
\uBC1C\uB3D9\xB7\uC18D\uB3C4 1.3 #834)"
|
||||
|
|
|
|||
|
|
@ -129,11 +129,12 @@
|
|||
"massLocal": [ 0, 0, 0 ],
|
||||
"fixedDir": false,
|
||||
"lockFacing": false,
|
||||
"spinDegrees": -360,
|
||||
"spinSeconds": 0.333,
|
||||
"spinDegrees": -720,
|
||||
"spinSeconds": 0.45,
|
||||
"spinFx": false,
|
||||
"spinBlendOut": 0.12,
|
||||
"keepTrail": true,
|
||||
"_note_966": "#966 PD 「비수 일반 공격 회전(마지막 타 직전)을 2회로 늘리고 캐릭터 회전 모션도 빠르게 2회」 — 몸 회전 −360°/0.333 s → −720°/0.45 s(1600°/s) · 검기 2개 = 매핑 3타 ShowEffect 두 번째(n 0.45 · floatParameter 180 = 반대편) · 두 번째 이벤트는 minInterval 0.3 으로 몸 회전을 다시 시작하지 않음(WLImpactFx keepTrail 묶음) · 회전이 끝난 뒤 4타로(3타 → 4타 전이 0.55 → 0.8) · 피해(판정 수)는 그대로",
|
||||
"_note_964": "#964 PD 「비수 공격 3타와 4타 이펙트를 1, 2타와 같은 검기로」 — keepTrail: 회전 이펙트(WL_Impact_DaggerRound)는 안 띄우고 1·2타와 같은 검기 호(Effect_WLSwingArc · 녹색)를 그대로 · 몸 1바퀴 회전(spin)은 유지 · 3타 궤적 보정(SlashTrailSettings Effect_Slash_10202_3)은 지금 클립(팔라딘 회전)으로 다시 구움 · prefab 칸은 기록용으로 남김",
|
||||
"_note_961": "#961 PD 「비수 3타 회전 이펙트는 Slash Effects FREE 에셋의 한 번만 회전하는 이펙트 — 점차 줄어드는 이펙트가 아닌 회전 후 즉시 소멸하는 이펙트로 교체」(참고 = 청록 초승달 1개 + 흰 점 + 빛 번짐) — 팩 6종 입자 구조 실측(961_fxinfo.cs): 초승달 1개 + 빛 점 30 + 빛 번짐 2 = Basic Slash Blue(감속 회전 700→245°/s · 0.4 s 동안 약 190° · 투명도 1→0.53→0 서서히) → 사본 WL_Impact_DaggerRound(hitbuild936 · 녹색 색조 fxtint954 (0.25,0.95,0.7) ×1.3) 을 961_spinfx.cs 로 초승달 수명 0.333 s · 회전 1081°/s 일정(위에서 보면 반시계 = 몸 −360°/0.333 s 와 같은 방향 같은 속도 · 정확히 1바퀴) · 투명도 0.9 까지 1 → 끝 0 · 크기 변화 끔 · 빛 점·번짐 수명 ×0.83 · 편집 모드 위 카메라 실측 0.02→0.31 s 한 바퀴 · 0.35 s 완전 소멸 · life 0.34 = 풀이 그 순간 끔 · 배율 0.75(사본 고리 반지름 약 2.1 m × 0.75 × 0.55 × 몸 크기 ≈ 1.0 m = 단검 리치) · 이전 WL_Impact_DaggerWhirl(원본 Skill_SpinSlash 사본 · 1초 동안 3바퀴/초로 계속 돌고 입자가 차례로 사라짐)은 파일만 남김",
|
||||
"_note_958": "#958 PD 「비수 3타 플레이어 회전 속도를 더 빠르게(이펙트와 일치하게)」 — 편집 모드 실측(958_spin.cs): 이펙트 자체 회전 = 칼날 층 slash_0 −1080°/s · slash (1) −1355 · slash (2) −1150 (루트 위 축 · 음수 = 위에서 보면 반시계) · 몸은 +360°/0.9 s = 400°/s 시계 방향이라 반대 방향 · 2.7배 느렸다 → −360°/0.333 s(= −1080°/s · 같은 방향 같은 속도) · 이펙트는 이미 스스로 돌므로 몸 각도로 한 번 더 돌리지 않음(spinFx false · 켜면 2160°/s 로 보임) · Play 프레임 실측(SpinTrace): 팔라딘 Around 클립 자체가 엉덩이를 시계 방향 약 300°/0.18 s 돌려 더하기 방식이면 상쇄 → 클립 yaw 를 덮어씀(WLSwingExtras · 끝 0.12 s 동안 클립 자세로 섞음)",
|
||||
|
|
|
|||
|
|
@ -299,6 +299,12 @@ namespace WL.Combat.Impact
|
|||
if (r == null || !Contains(r.classIds, cls) || (r.stages != null && r.stages.Length > 0 && !Contains(r.stages, stage))) continue;
|
||||
if (r.keepTrail) // #964 검기 호는 그대로 두고(false → WeaponTrailDriver) 부가 연출만
|
||||
{
|
||||
if (r.minInterval > 0f) // #966 한 클립에 ShowEffect 가 2번(비수 3타 2회전 = 두 번째 검기)이면 연출(몸 회전 등)은 첫 번에만 · 검기는 매번
|
||||
{
|
||||
long key = ((long)pc.GetInstanceID() << 4) | (long)(stage & 15); float last;
|
||||
if (s_swingAt.TryGetValue(key, out last) && Time.time - last < r.minInterval) { SwingThrottled++; LastSwing = "keepTrail stage " + stage + " (연출 묶음)"; return false; }
|
||||
s_swingAt[key] = Time.time;
|
||||
}
|
||||
if (r.blinkDistance > 0f || r.camHoldSeconds > 0f || r.spinDegrees != 0f) WLSwingExtras.Begin(pc, r, null);
|
||||
KeepTrails++; LastSwing = "keepTrail stage " + stage; LastLog = LastSwing;
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -441,6 +441,18 @@ namespace WL.Combat
|
|||
[Tooltip("#964 타별 호 크기 배율(arcSizeMul 에 곱한다) — 칸 번호 = 타 − 1 · 비우거나 0 이하 = 1 (비수 4타 = PD 「4타 크기 30 % 축소」)")]
|
||||
public float[] arcSizeMulStages = new float[0];
|
||||
|
||||
[Tooltip("#966 타별 호 겨누기(0~1) — 칸 번호 = 타 − 1 · 1 = 호 가운데를 대상(없으면 PC 정면) 쪽으로 호 면 안에서 돌린다 · 0 = 궤적 실측 그대로(비수 1·2타 = PD 「몬스터 방향으로」)")]
|
||||
public float[] arcAimStages = new float[0];
|
||||
|
||||
/// <summary>#966 이 타의 호 겨누기 비율(0~1) — 없으면 0.</summary>
|
||||
public float StageAim(string effectName)
|
||||
{
|
||||
if (arcAimStages == null || arcAimStages.Length == 0 || string.IsNullOrEmpty(effectName)) return 0f;
|
||||
int i = effectName.LastIndexOf('_'), st;
|
||||
if (i < 0 || !int.TryParse(effectName.Substring(i + 1), out st) || st < 1 || st > arcAimStages.Length) return 0f;
|
||||
return Mathf.Clamp01(arcAimStages[st - 1]);
|
||||
}
|
||||
|
||||
/// <summary>#964 이 타(ShowEffect 이름 끝 숫자 · Effect_Slash_{직업}_{타})의 호 크기 배율 — 없으면 1.</summary>
|
||||
public float StageSizeMul(string effectName)
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b383989731cd7094db476466df2d2296
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -5210,7 +5210,7 @@ ParticleSystem:
|
|||
serializedVersion: 2
|
||||
minMaxState: 0
|
||||
minColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
|
||||
maxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
|
|
@ -6362,8 +6362,8 @@ ParticleSystem:
|
|||
maxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 0}
|
||||
key1: {r: 1, g: 1, b: 1, a: 1}
|
||||
key0: {r: 0.93, g: 0.91, b: 0.88, a: 0.7}
|
||||
key1: {r: 0.84, g: 0.84, b: 0.86, a: 0.55}
|
||||
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}
|
||||
|
|
@ -6379,7 +6379,7 @@ ParticleSystem:
|
|||
ctime6: 0
|
||||
ctime7: 0
|
||||
atime0: 0
|
||||
atime1: 9830
|
||||
atime1: 32768
|
||||
atime2: 65535
|
||||
atime3: 0
|
||||
atime4: 0
|
||||
|
|
@ -6428,8 +6428,8 @@ ParticleSystem:
|
|||
fps: 30
|
||||
frameOverTime:
|
||||
serializedVersion: 2
|
||||
minMaxState: 1
|
||||
scalar: 0.9999
|
||||
minMaxState: 3
|
||||
scalar: 0.6859375
|
||||
minScalar: 0.65625
|
||||
maxCurve:
|
||||
serializedVersion: 2
|
||||
|
|
@ -6533,8 +6533,8 @@ ParticleSystem:
|
|||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
speedRange: {x: 0, y: 1}
|
||||
tilesX: 4
|
||||
tilesY: 4
|
||||
tilesX: 8
|
||||
tilesY: 8
|
||||
animationType: 0
|
||||
rowIndex: 0
|
||||
cycles: 1
|
||||
|
|
@ -9253,7 +9253,7 @@ ParticleSystem:
|
|||
m_NumColorKeys: 2
|
||||
m_NumAlphaKeys: 2
|
||||
CustomDataModule:
|
||||
enabled: 0
|
||||
enabled: 1
|
||||
mode0: 1
|
||||
vectorComponentCount0: 4
|
||||
color0:
|
||||
|
|
@ -9848,7 +9848,7 @@ ParticleSystemRenderer:
|
|||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
|
||||
- {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
|
|
@ -9891,7 +9891,7 @@ ParticleSystemRenderer:
|
|||
m_FreeformStretching: 0
|
||||
m_RotateWithStretchDirection: 1
|
||||
m_UseCustomVertexStreams: 1
|
||||
m_VertexStreams: 00010304
|
||||
m_VertexStreams: 00010304052226
|
||||
m_UseCustomTrailVertexStreams: 0
|
||||
m_TrailVertexStreams: 00010304
|
||||
m_Mesh: {fileID: 0}
|
||||
|
|
@ -15043,7 +15043,7 @@ ParticleSystem:
|
|||
serializedVersion: 2
|
||||
minMaxState: 0
|
||||
minColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
|
||||
maxColor: {r: 0.93, g: 0.91, b: 0.88, a: 0.55}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
|
|
@ -16261,8 +16261,8 @@ ParticleSystem:
|
|||
fps: 30
|
||||
frameOverTime:
|
||||
serializedVersion: 2
|
||||
minMaxState: 1
|
||||
scalar: 0.9999
|
||||
minMaxState: 0
|
||||
scalar: 0.828125
|
||||
minScalar: 0.28125
|
||||
maxCurve:
|
||||
serializedVersion: 2
|
||||
|
|
@ -16366,8 +16366,8 @@ ParticleSystem:
|
|||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
speedRange: {x: 0, y: 1}
|
||||
tilesX: 4
|
||||
tilesY: 4
|
||||
tilesX: 8
|
||||
tilesY: 8
|
||||
animationType: 0
|
||||
rowIndex: 0
|
||||
cycles: 1
|
||||
|
|
@ -19086,7 +19086,7 @@ ParticleSystem:
|
|||
m_NumColorKeys: 2
|
||||
m_NumAlphaKeys: 2
|
||||
CustomDataModule:
|
||||
enabled: 0
|
||||
enabled: 1
|
||||
mode0: 1
|
||||
vectorComponentCount0: 4
|
||||
color0:
|
||||
|
|
@ -19681,7 +19681,7 @@ ParticleSystemRenderer:
|
|||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
|
||||
- {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
|
|
@ -19724,7 +19724,7 @@ ParticleSystemRenderer:
|
|||
m_FreeformStretching: 0
|
||||
m_RotateWithStretchDirection: 1
|
||||
m_UseCustomVertexStreams: 1
|
||||
m_VertexStreams: 00010304
|
||||
m_VertexStreams: 00010304052226
|
||||
m_UseCustomTrailVertexStreams: 0
|
||||
m_TrailVertexStreams: 00010304
|
||||
m_Mesh: {fileID: 0}
|
||||
|
|
@ -24931,7 +24931,7 @@ ParticleSystem:
|
|||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 0.3330518, b: 0, a: 1}
|
||||
key1: {r: 0, g: 0, b: 0, a: 1}
|
||||
key1: {r: 0.86, g: 0.83, b: 0.8, 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}
|
||||
|
|
@ -29932,7 +29932,7 @@ ParticleSystem:
|
|||
serializedVersion: 2
|
||||
minMaxState: 0
|
||||
minColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
|
||||
maxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
|
|
@ -31084,8 +31084,8 @@ ParticleSystem:
|
|||
maxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 0}
|
||||
key1: {r: 1, g: 1, b: 1, a: 1}
|
||||
key0: {r: 0.93, g: 0.91, b: 0.88, a: 0.7}
|
||||
key1: {r: 0.84, g: 0.84, b: 0.86, a: 0.55}
|
||||
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}
|
||||
|
|
@ -31101,7 +31101,7 @@ ParticleSystem:
|
|||
ctime6: 0
|
||||
ctime7: 0
|
||||
atime0: 0
|
||||
atime1: 9830
|
||||
atime1: 32768
|
||||
atime2: 65535
|
||||
atime3: 0
|
||||
atime4: 0
|
||||
|
|
@ -31150,8 +31150,8 @@ ParticleSystem:
|
|||
fps: 30
|
||||
frameOverTime:
|
||||
serializedVersion: 2
|
||||
minMaxState: 1
|
||||
scalar: 0.9999
|
||||
minMaxState: 3
|
||||
scalar: 0.0453125
|
||||
minScalar: 0
|
||||
maxCurve:
|
||||
serializedVersion: 2
|
||||
|
|
@ -31255,8 +31255,8 @@ ParticleSystem:
|
|||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
speedRange: {x: 0, y: 1}
|
||||
tilesX: 4
|
||||
tilesY: 4
|
||||
tilesX: 8
|
||||
tilesY: 8
|
||||
animationType: 0
|
||||
rowIndex: 0
|
||||
cycles: 1
|
||||
|
|
@ -33975,7 +33975,7 @@ ParticleSystem:
|
|||
m_NumColorKeys: 2
|
||||
m_NumAlphaKeys: 2
|
||||
CustomDataModule:
|
||||
enabled: 0
|
||||
enabled: 1
|
||||
mode0: 1
|
||||
vectorComponentCount0: 4
|
||||
color0:
|
||||
|
|
@ -34570,7 +34570,7 @@ ParticleSystemRenderer:
|
|||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
|
||||
- {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
|
|
@ -34613,7 +34613,7 @@ ParticleSystemRenderer:
|
|||
m_FreeformStretching: 0
|
||||
m_RotateWithStretchDirection: 1
|
||||
m_UseCustomVertexStreams: 1
|
||||
m_VertexStreams: 00010304
|
||||
m_VertexStreams: 00010304052226
|
||||
m_UseCustomTrailVertexStreams: 0
|
||||
m_TrailVertexStreams: 00010304
|
||||
m_Mesh: {fileID: 0}
|
||||
|
|
@ -49604,8 +49604,8 @@ ParticleSystem:
|
|||
startColor:
|
||||
serializedVersion: 2
|
||||
minMaxState: 2
|
||||
minColor: {r: 0.13207549, g: 0.13207549, b: 0.13207549, a: 1}
|
||||
maxColor: {r: 0.2924528, g: 0.2924528, b: 0.2924528, a: 1}
|
||||
minColor: {r: 0.78, g: 0.75, b: 0.72, a: 0.8}
|
||||
maxColor: {r: 0.93, g: 0.91, b: 0.88, a: 0.8}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
|
|
@ -50740,7 +50740,7 @@ ParticleSystem:
|
|||
m_RotationOrder: 4
|
||||
separateAxes: 0
|
||||
ColorModule:
|
||||
enabled: 0
|
||||
enabled: 1
|
||||
gradient:
|
||||
serializedVersion: 2
|
||||
minMaxState: 1
|
||||
|
|
@ -50748,8 +50748,8 @@ ParticleSystem:
|
|||
maxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
maxGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
key1: {r: 1, g: 1, b: 1, a: 0}
|
||||
key0: {r: 1, g: 1, b: 1, a: 0}
|
||||
key1: {r: 1, g: 1, b: 1, 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}
|
||||
|
|
@ -50765,8 +50765,8 @@ ParticleSystem:
|
|||
ctime6: 0
|
||||
ctime7: 0
|
||||
atime0: 0
|
||||
atime1: 65535
|
||||
atime2: 0
|
||||
atime1: 9830
|
||||
atime2: 65535
|
||||
atime3: 0
|
||||
atime4: 0
|
||||
atime5: 0
|
||||
|
|
@ -50775,7 +50775,7 @@ ParticleSystem:
|
|||
m_Mode: 0
|
||||
m_ColorSpace: -1
|
||||
m_NumColorKeys: 2
|
||||
m_NumAlphaKeys: 2
|
||||
m_NumAlphaKeys: 3
|
||||
minGradient:
|
||||
serializedVersion: 2
|
||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||
|
|
@ -54516,7 +54516,7 @@ ParticleSystem:
|
|||
serializedVersion: 2
|
||||
key0: {r: 1, g: 0.6784314, b: 0.3254902, a: 1}
|
||||
key1: {r: 1, g: 0.37254903, b: 0.18431373, a: 1}
|
||||
key2: {r: 0, g: 0, b: 0, a: 0}
|
||||
key2: {r: 0.86, g: 0.83, b: 0.8, 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}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@
|
|||
"_note_959": "#959 PD 「각성 시전 후 공중에 떨어지지 말고 옆에서 튀어나와 정지하는 것처럼」 — 시전 잔상은 위(1.0) 대신 오른쪽 1.0 m 로 빠지고(jumpSide · 위 0.15 · 앞 0.1) · 다시 보이는 순간 최종 자리의 오른쪽 1.2 m(entrySide)에서 0.2 s 동안 감속하며 미끄러져 들어와(그동안 반투명 착지 자세 캐릭터 · 수직 이동 0 = landHeight 0) 정지(앞 미끄러짐 0.45 → 0.1 m) → 모델 + 잔상 3 + 먼지",
|
||||
"landAtSeconds": 3.4,
|
||||
"invisibleMatchFx": 1,
|
||||
"invisibleExtra": 0.0,
|
||||
"invisibleExtra": -0.3,
|
||||
"_note_966": "#966 PD 「비수 각성 스킬의 캐릭터 등장 타이밍을 지금보다 더 빠르게」 — 숨김 = 이펙트 끝 − 0.3 s(마지막 폭발 Exp_11 이 터지는 즈음 · 실측 = 966 검증)",
|
||||
"_note_965": "#965 PD 「비수 각성 스킬 끝나고 캐릭터 등장까지 딜레이가 너무 길어 — 이펙트 종료와 동시에 캐릭터가 등장」 — 원본 Skill_DarkAmbush 의 숨김 Set_Invisible(1.5 s)를 이 시전 이펙트 끝(폭발 Exp_01~ 시작 지연 0~1.0 s + 분출 + 수명 · 켜진 렌더러 입자계만)으로(원본 훅 1줄 · WLGhostStrike.InvisibleSeconds) · 다시 보이는 순간 = 착지 시작 · 0 이면 원본 1.5 s",
|
||||
"airClip": "Skill8_Air",
|
||||
"landGhosts": 0,
|
||||
|
|
|
|||
|
|
@ -12,8 +12,10 @@
|
|||
"_note_942": "#942 PD 「마법사 주력 스킬 … 플레이어가 이동해도 발동 된 스킬이 끊겨선 안돼 … 활 각성 스킬도 동일」 — Play 실측(CastMove): 시전 0.4~0.6 초 뒤 이동하면 발동 이벤트(SkillFired) 전에 시전 동작이 Run 으로 끊겨 투사체가 아예 안 나왔다(스킬발사 +0) → lockUntilFire = 발동까지만 이동·구르기 입력 무시(상한 holdMaxSeconds) · 발동 뒤 이동은 자유 · 투사체는 noSkip(Skill_Hurricane 추가 · Skill_ArrowRain 기존)으로 끝까지 유지",
|
||||
"lockUntilFire": [
|
||||
"Skill_Hurricane",
|
||||
"Skill_ArrowRain"
|
||||
"Skill_ArrowRain",
|
||||
"Skill_DarkAmbush"
|
||||
],
|
||||
"_note_966": "#966 비수 각성(Skill_DarkAmbush)에 시전 0.5 s 가 생겨(SkillList f_CastingTime) 시전 중 이동으로 끊기지 않게 lockUntilFire 에 추가",
|
||||
"holdMove": [
|
||||
"Skill_DashSlash"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@
|
|||
"center": "target",
|
||||
"fx": {
|
||||
"prefab": "WL/Fx/WL_Fx_Meteor01",
|
||||
"scale": 0.3,
|
||||
"scale": 0.45,
|
||||
"bodyScale": 0,
|
||||
"offset": [
|
||||
0,
|
||||
|
|
@ -145,6 +145,7 @@
|
|||
"meteorInterval": 0.12,
|
||||
"meteorImpact": 0.67,
|
||||
"meteorYaw": 30,
|
||||
"_note_966": "#966 PD 「메테오 바위의 크기가 너무 작아서 메테오스럽지 않아 1.5배」 — fx 배율 0.3 → 0.45(운석 전체 = 낙하체 · 폭발 함께 1.5 배 · 낙하 시작 높이도 1.5 배 · 충돌 시각은 같음 = 위치·속도가 함께 커짐(Hierarchy) · 판정 반경 1.6 m 그대로) · 폭발 짙은 연기 = impact_stone(짙은 회색 0.13~0.29)을 투사체 연기와 같은 재질·색(알파 0.36)으로(966_apply.cs)",
|
||||
"_note_963": "#963 PD 「지팡이 각성 = Hyper Casual FX Pack Vol.2 스크린샷 같은 메테오 — 플레이어가 타겟한 대상 주위 5 m 범위에 운석 10개 랜덤 낙하 · 낙하 자리의 적에게 피해 · 맞은 적 0.5 초 스턴」 — 팩 메테오 4종 색 대조(주황 불꽃 + 검은 연기 = 01 · 02 파랑 · 03 빠른 선 · 04 보라) → 사본 WL_Fx_Meteor01(충돌 = 루트 높이 평면 · 바닥 콜라이더 무관 · 편집 모드 실측 0.67 s 에 그 자리 충돌) · 0.12 s 간격 10개 · 대상 둘레 5 m 원 안 무작위(대상이 움직이면 따라감) · 땅에 닿는 0.67 s 에 반경 1.6 m(+ 몸 반지름) 적마다 원본 운석 소환 피해(ProcessCollider · 운석마다 따로) + 기절 0.5 s(WLLaunch · 띄움 0) · 운석은 카메라 정면 오른쪽 30° 쪽 위에서 떨어짐 · 배율 0.3(시작 높이 6 m)"
|
||||
}
|
||||
],
|
||||
|
|
@ -201,5 +202,24 @@
|
|||
"head": 0,
|
||||
"headPull": 0.08,
|
||||
"_note_963": "#963 PD 「플레이어가 마법을 시전할 때는 Hyper Casual FX Pack Vol.1 의 첨부 스크린샷 같은 마법진을 플레이어가 있는 바닥에 재생되었다가 시전(이펙트 색상은 주황색 계열)」 — 팩 마법진 4종 편집 모드 대조(파란 고리 + 빛 기둥 + 떠오르는 점 = 04) → 사본 WL_Fx_CastCircle(시작색 색조 주황 (1.0,0.5,0.12) · 재질 사본 _Color ×1.3 · fxtint954) · 지팡이 · 오브 · 마법책 직업의 스킬 시전마다 발밑(시전 시간 + 0.6 s · 마지막 0.4 s 흐려짐 · 따라감) · 배율 0.3(팩 단위 지름 약 7 m → 약 2.1 m)"
|
||||
}
|
||||
},
|
||||
"skillCastFx": [
|
||||
{
|
||||
"skill": "Skill_DarkAmbush",
|
||||
"fx": {
|
||||
"prefab": "WL/Fx/WL_Fx_DaggerCast",
|
||||
"scale": 0.4,
|
||||
"bodyScale": 0,
|
||||
"offset": [ 0, 0, 0 ],
|
||||
"euler": [ 0, 0, 0 ],
|
||||
"life": 0.3,
|
||||
"fade": 0.2,
|
||||
"follow": 1,
|
||||
"socket": "",
|
||||
"head": 0,
|
||||
"headPull": 0.08
|
||||
},
|
||||
"_note_966": "#966 PD 「비수 각성 스킬에 시전 모션 및 시전 이펙트 — Hyper Casual FX Pack Vol.2 에셋에 있는 스크린샷 이펙트를 캐릭터에게 한번 재생시킨 후 발동」 — 팩 후보 24종 편집 모드 대조(scratchpad 966_sheet · 진홍 회오리 검기 + 위에서 내려오는 세로 줄기 = HCFX_Energy_01 · 약 0.5 s) → 사본 WL_Fx_DaggerCast · 시전(SkillCast) 순간 캐릭터 발밑에서 따라감 · 시전 시간 0.5 s(SkillList 703206 f_CastingTime) + 0.3 s · 배율 0.4(대조표 0.34 ≈ 몸 1 m 둘레)"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -63,6 +63,14 @@ namespace WL.Combat.Weapon
|
|||
public float meteorArea = 5f, meteorInterval = 0.12f, meteorImpact = 0.67f, meteorYaw = 30f;
|
||||
}
|
||||
|
||||
/// <summary>#966 PD 「비수 각성 스킬에 시전 모션 및 시전 이펙트 — Hyper Casual FX Pack Vol.2 스크린샷 이펙트를 캐릭터에게 한번 재생시킨 후 발동」 — 이 원본 스킬(e_Skill)의 시전(SkillCast) 순간 시전자에게 fx(시전 시간 + life · follow 1 = 따라감)</summary>
|
||||
[System.Serializable]
|
||||
public class WLSkillCastFx
|
||||
{
|
||||
public string skill = "";
|
||||
public WLStaffEarthFx fx = new WLStaffEarthFx();
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class WLStaffEarthPopup
|
||||
{
|
||||
|
|
@ -84,12 +92,13 @@ namespace WL.Combat.Weapon
|
|||
// #963 PD 「플레이어가 마법을 시전할 때는 Hyper Casual FX Pack Vol.1 의 마법진을 플레이어가 있는 바닥에 재생되었다가 시전(주황색 계열)」 — castCircleClasses 직업의 스킬 시전(SkillCast)마다 발밑에 castCircle(시전 시간 + life · 따라감)
|
||||
public int[] castCircleClasses = new int[0];
|
||||
public WLStaffEarthFx castCircle = new WLStaffEarthFx();
|
||||
public WLSkillCastFx[] skillCastFx = new WLSkillCastFx[0]; // #966 스킬별 시전 이펙트(시전자)
|
||||
}
|
||||
|
||||
public static class WLStaffEarth
|
||||
{
|
||||
public const string ResourcesPath = "WL/WLStaffEarth";
|
||||
public static int Casts, TakeOvers, Hits, Launches, Marked, Popups, Errors, Circles, Meteors;
|
||||
public static int Casts, TakeOvers, Hits, Launches, Marked, Popups, Errors, Circles, Meteors, SkillCastFxShown;
|
||||
public static string MeteorSrc = ""; public static Vector3 MeteorCenter; public static readonly List<Vector3> MeteorPts = new List<Vector3>(), MeteorCenters = new List<Vector3>(); // #964 검증용(메테오 중심 출처 · 낙하 자리)
|
||||
public static string LastLog = "";
|
||||
|
||||
|
|
@ -130,6 +139,8 @@ namespace WL.Combat.Weapon
|
|||
if (pc == null || e.skill == null) return;
|
||||
float cast = Mathf.Max(0f, e.skill.f_CastingTime);
|
||||
if (pc.IsMainPC() && c.castCircleClasses != null && System.Array.IndexOf(c.castCircleClasses, pc.Get_ID()) >= 0 && Spawn(c.castCircle, pc, pc.transform, pc.Get_position(), cast) != null) Circles++; // #963 마법 시전 마법진
|
||||
if (pc.IsMainPC() && c.skillCastFx != null) // #966 스킬별 시전 이펙트(비수 각성 = HCFX Energy_01 사본)
|
||||
foreach (var sf in c.skillCastFx) if (sf != null && sf.skill == e.skill.e_Skill.ToString() && Spawn(sf.fx, pc, pc.transform, pc.Get_position(), cast) != null) SkillCastFxShown++;
|
||||
if (c.castSkills == null || System.Array.IndexOf(c.castSkills, e.skill.e_Skill.ToString()) < 0) return;
|
||||
var sock = Socket(pc, c.chargeFx.socket);
|
||||
if (Spawn(c.chargeFx, pc, sock, sock != null ? Tip(sock, c.chargeFx) : pc.Get_Center_position(), cast) != null) Casts++;
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@ namespace WL.Combat
|
|||
public int classId;
|
||||
public string source; // 원본 이벤트 프리팹 이름
|
||||
public string effect; // 실제로 띄운 이펙트 이름
|
||||
public float yawOffset; // #966 ShowEffect 이벤트 floatParameter = 호를 월드 위 축 둘레로 더 돌릴 각(도 · 원본은 이 값을 쓰지 않는다 · 비수 3타 두 번째 회전 검기 = 반대편)
|
||||
public SwingKind kind;
|
||||
public bool fromCache; // 이벤트 시점 즉시 배치였는가
|
||||
public float delayMs; // 이벤트 → 배치까지 걸린 시간
|
||||
|
|
@ -171,6 +172,8 @@ namespace WL.Combat
|
|||
/// <summary>#792 경로로 배치한 총 횟수. 검증 전용.</summary>
|
||||
public static int MappedSpawnCount;
|
||||
public static int ArcTilted; // #922 기울기를 적용한 호 배치 수(진단)
|
||||
public static int ArcAimed, ArcYawed; // #966 대상 쪽으로 돌린 호 · 이벤트 각으로 돌린 호(진단)
|
||||
private float _arcYaw; // #966 지금 이벤트의 floatParameter(호 위 축 회전 · 도)
|
||||
|
||||
// ── 검증용 공개 프로퍼티 (2단계 CSV 샘플러가 읽는다) ────────────────────
|
||||
/// <summary>스윙 창이 열려 있는가.</summary>
|
||||
|
|
@ -296,6 +299,7 @@ namespace WL.Combat
|
|||
if (!TryReadState(out hash, out norm)) return false;
|
||||
|
||||
_burstPrefab = ev.stringParameter;
|
||||
_arcYaw = ev.floatParameter; // #966
|
||||
|
||||
// PD #792 — (클래스, 클립) 캘리브레이션이 이미 있으면 **이벤트가 뜬 이 프레임에** 배치한다.
|
||||
// 원본 이펙트와 같은 타이밍에 뜨는 것이 요구 사양이고, 스윙 평면·반지름·피벗은
|
||||
|
|
@ -1509,6 +1513,7 @@ namespace WL.Combat
|
|||
classId = classId,
|
||||
source = _burstPrefab,
|
||||
effect = effect,
|
||||
yawOffset = _arcYaw,
|
||||
kind = kind,
|
||||
fromCache = fromCache,
|
||||
tipRadius = cal.tipRadius,
|
||||
|
|
@ -1605,6 +1610,18 @@ namespace WL.Combat
|
|||
bW -= nW * Vector3.Dot(bW, nW); // 직교화(수치 오차 정리)
|
||||
if (bW.sqrMagnitude < 1e-8f) return;
|
||||
nW.Normalize(); bW.Normalize();
|
||||
// #966 PD 「비수 1타와 2타 공격 이펙트가 실제 몬스터 위치까지 가기 전에 끊어지는 느낌 — 좀 더 몬스터 방향으로」 — 타별 arcAimStages(0~1): 호 가운데(이등분)를
|
||||
// 대상 쪽(없으면 PC 정면 · 수평)으로 호 면 안에서 그만큼 돌린다(면 · 반지름 · 피벗은 그대로 · 실측: 1타 이등분이 PC 뒤쪽 −Z · 2타 오른쪽이라 앞의 몬스터에 안 닿아 보였다)
|
||||
var covAim = settings.FindOverride(p.classId);
|
||||
float aim = covAim != null ? covAim.StageAim(!string.IsNullOrEmpty(cal.clipName) ? cal.clipName : _burstPrefab) : 0f;
|
||||
if (aim > 0.001f && _pc != null)
|
||||
{
|
||||
var tgt = _pc.Get_Target(); Vector3 want = tgt != null ? tgt.Get_position() - _pc.Get_position() : _pc.transform.forward; want.y = 0f;
|
||||
if (want.sqrMagnitude < 1e-4f) want = _pc.transform.forward;
|
||||
Vector3 wp = want.normalized; wp -= nW * Vector3.Dot(wp, nW);
|
||||
if (wp.sqrMagnitude > 1e-3f) { wp.Normalize(); bW = Vector3.Slerp(bW, wp, Mathf.Clamp01(aim)); bW -= nW * Vector3.Dot(bW, nW); if (bW.sqrMagnitude > 1e-8f) { bW.Normalize(); ArcAimed++; } else bW = wp; }
|
||||
}
|
||||
if (Mathf.Abs(p.yawOffset) > 0.01f) { var qy = Quaternion.AngleAxis(p.yawOffset, Vector3.up); nW = qy * nW; bW = qy * bW; ArcYawed++; } // #966 이벤트 각
|
||||
// #922 (클래스, 클립) 호 기울기 — 이등분 축 둘레로 돌려 카메라에서 보이는 면을 넓힌다(±중 카메라를 더 마주 보는 쪽)
|
||||
float tilt = settings.ArcTilt(p.classId, p.source);
|
||||
if (Mathf.Abs(tilt) > 0.01f)
|
||||
|
|
|
|||
|
|
@ -157,6 +157,11 @@ MonoBehaviour:
|
|||
- 1
|
||||
- 1
|
||||
- 1.6
|
||||
arcAimStages:
|
||||
- 1
|
||||
- 1
|
||||
- 0
|
||||
- 0
|
||||
- classId: 10501
|
||||
mode: 0
|
||||
overrideLook: 0
|
||||
|
|
|
|||
Loading…
Reference in New Issue