You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua旋转点绘圆:解决启停后点位跳转的状态保存问题

解决圆形旋转点重启跳转问题

你的代码问题出在时间计算逻辑上:(t - last) + t这个表达式完全错误,重启时会导致计算出的角度突然跳变,所以点会瞬移。正确的思路是保存累计的旋转时长,而不是每次记录单个时间点,这样重启时能从上次停止的角度继续旋转。

修复后的代码如下:

local elapsedTime = 0  -- 保存累计旋转的总时长
local trigger = false
local lastUpdateTime = getMillis()  -- 记录上一次update的时间

function update()
    local currentTime = getMillis()
    local T = 3000  -- 旋转周期(毫秒)
    
    if trigger then
        -- 计算本次update和上次的时间差,累加到总时长
        local delta = currentTime - lastUpdateTime
        elapsedTime = elapsedTime + delta
        
        -- 用累计时长计算角度,得到平滑的x/y坐标
        local angle = 2 * math.pi * elapsedTime / T
        x = math.cos(angle)
        y = math.sin(angle)
    end
    
    lastUpdateTime = currentTime  -- 更新上一次update的时间
end

function onValueChanged(key)
    if key == "x" and self.values.x == 1 then
        trigger = not trigger
        -- 启动时同步当前时间,避免暂停期间的时间被累加
        if trigger then
            lastUpdateTime = getMillis()
        end
    end
end

关键修改说明:

  • 用elapsedTime累计旋转的总时长,暂停时这个值会保留,重启后继续累加,保证角度连续。
  • 每次update计算时间差delta,避免直接用系统时间导致的跳变。
  • 启动时重置lastUpdateTime,防止暂停期间的时间被误加到elapsedTime里。

这样修改后,旋转点在停止再启动时会从上次的位置继续平滑旋转,不会出现跳转。

内容的提问来源于stack exchange,提问作者Fried Maxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:10:32