[Parity][render][S1][R] 循环 missile / overlay 动画被推进了两次(约 2 倍速,相位跟着全局时钟走) #602
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
来源审计项:
render#1— [S1][R] 循环 missile / overlay 动画被推进了两次(约 2 倍速,相位跟着全局时钟走)src/client/scene/world-renderer.ts:932-936(drawSceneMissileDrawable)src/client/scene/world-renderer.ts:992-996(drawSceneOverlayDrawable)src/client/world/client-world.ts:1214-1219(missile:floor(ageTicks*animSpeed/16))、client-world.ts:1511-1521(overlay:floor(ageTicks*animRate/16))、src/client/view/unit-drawables.ts:390-393、:449-452(没有 frame 时用tick)、:525(状态 overlay:tick % meta.totalFrames)nSeqCurrentFramePrecise += wAnimSpeed)。missile 的速度和帧数在切换模式时由行数据一次性确定:wAnimSpeed = (animrate<<8)/1024,dwFrameCountPrecise = AnimLen<<8(证据:V-srcD2MOO/source/D2Common/src/Units/Units.cpp:795-802)。不存在"单位自身帧号 + 全局时钟帧号"两路相加。nowMs在出生那一刻的值(等于随机),同类 missile 之间不同步。客户端 tick 已经推进的frame又被时钟再推一次。unit.frame(client-world 已按 tick 推进),要么完全用(nowMs - spawnMs)计算。速度用missiles.txt当前行的速度列(见 S2「missile 动画参数」与待确认 #2),帧数用AnimLen。