用户:
CODE张博睿查看:14 回复:26 评论:14 创建时间:2020-03-17T17:39:18
很多人都想要做计时器呢~
我在我的跑酷经常用 onTick 计时器(虽然没测过精准度……),
原理是“科学”的。

-----------------------------------------我是分割线-----------------------------------------
首先,来看说明文档“Event 事件 》Box3TickEvent 时钟”:
每一刻(tick)触发一次的事件,由 Box3World.onTick 触发。
示例代码
world.onTick((tickEvent) => {
console.log(tickEvent.elapsedTimeMS);
console.log(tickEvent.prevTick);
console.log(tickEvent.skip);
console.log(tickEvent.tick);
})
elapsedTimeMS
• elapsedTimeMS: number
Wall clock time between ticks 两个时刻之间的时间间隔
-----------------------------------------我是分割线-----------------------------------------
注意到了没,我只留下了这一个参数……
因为这只用一个参数。
注意:别听 Tick 是 喵ms,官方写的是:滴答声的间隔大约为喵ms。
大约!大约!如果卡了,Tick 可能是 喵000ms 也可能……
-----------------------------------------我是分割线-----------------------------------------
首先,定义一个计时器变量:
var time;
然后,每次 Tick 更新时增加与上次 Tick 之间的间隙加到 time 里:
world.onTick((tickEvent) => {
time += tickEvent.elapsedTimeMS;
//tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
//也就是说,time 的单位是毫秒(ms)
})
如果嫌毫秒(ms)难用,可以把上面替换成下面的:
world.onTick((tickEvent) => {
time += tickEvent.elapsedTimeMS;
//tickEvent.elapsedTimeMS 是离上次 Tick 有多少毫秒(ms)
//也就是说,time 的单位是毫秒(ms)
timeS = time/1000;
//秒与毫秒的进制为 1000,timeS 的单位是秒(s)
})
-----------------------------------------我是分割线-----------------------------------------
好啦,大体就是这样啦~
有其他问题下面评论!
CODE张博睿来一下此代码在跑酷的应用!
-----------------------------------------我是分割线-----------------------------------------
中途存档时的时间提示:
//如果你用了 timeS ...
world.say(`XXX 存档成功!用时:${timeS} 秒!`);
//如果你没用 timeS ...
world.say(`XXX 存档成功!用时:${time/1000} 秒!`);
注:XXX 视你的事件为准,我的是 ${entity.player.name}
跑酷结束时的提示和放大:
//如果你用了 timeS ...
if (timeS <= 500){//如果用时小于 500 秒...
world.say(`XXX 到达终点!用时:${timeS} 秒!放大 5 倍!`);
entity.player.scale = 5
} else {
world.say(`XXX 到达终点!用时:${timeS} 秒!放大 2 倍!`);
entity.player.scale = 2
}
//如果你没用 timeS ...
if (time/1000 <= 500){//如果用时小于 500 秒...
world.say(`XXX 到达终点!用时:${time/1000} 秒!放大 5 倍!`);
YYY.scale = 5
} else {
world.say(`XXX 到达终点!用时:${time/1000} 秒!放大 2 倍!`);
YYY.scale = 2
}
注:XXX 视你的事件为准,我的是 ${entity.player.name}
YYY 视你的事件为准,我的是 entity.player
点赞1
评论