放电路前先讲下起因吧……
100多小时,火箭还没打,前80小时光顾着研究教程了……教程做完一脸头大,我是谁?我在哪?我要干什么?
然后进吧了解了一下,哦,原来要搞原油啊。去看了眼原油配方,更头大了
偶然了解到可以通过电路的方式控制储油罐阀门,于是又跑去研究电路……
看到电路里有个东西叫扬声器,嚯,可以全图发警报。那我整个油量报警岂不是很爽?
然后又发现:我想让这玩意延迟/持续报警 N 秒,要怎么搞?
吧里讲计时的帖子一只手就能数过来,花了十几个小时整了各种奇怪的结构,总算把个能用的秒表(1800s误差15s)整出来了。中途一堆如何重置、计时乱飘的坑爹问题略过不表……下面直接发图。
基本结构如下:

其中运算器的【输入】参数均可用Each信号(【每个信号】)替代。使用红信号是为了便于各位理解。

重置秒表的关键在于这个判断器:

如果绿信号 < 0,输出红信号,然后判断器上的红线把输出又输入回去进行套娃。什么意思呢?
注意右侧输入红信号48k,绿信号-1。
具体怎么回事,来看两个常量运算器:
下方常量运算器始终保持开启,永远输出红信号1。

上方常量运算器输出绿信号-1。
——实际上这就是秒表重置开关,按需开启。

所以开关电路的逻辑如下:
1)绿箱子关闭,输出0,红箱子开启,始终输出1——判断器上输入为:绿色0,红色1,0<0,结果为False,不输出任何信号。
2)绿箱子打开,输出-1,红箱子开启——判断器上输入为:绿色-1,红色1,-1<0,结果为True,输出红色1,红色1回到输入端开始套娃,于是每帧(1/60s)内,判断器输出【常量箱的红信号+判断器上一刻的输出信号】,即循环+1。换言之,我们可以就此统计该秒表流逝了多少个1/60s。
算术运算器部分,下标U、M的运算器只是为了看时间方便,最下面的运算器拿来看时间(方便测试误差),实际拿掉也没关系。也就是说想读秒的话,只取用中间两个甚至一个运算器即可。


下标T的运算器,将累计的红信号除以3600并取余数【%运算符为求余】并输出T信号。
什么效果呢?
游戏帧3600 = 60s(ups没掉的情况下)
3600 % 3600 = 0,T = 0
3601 % 3600 = 1,T = 1
3649 % 3600 = 49,T = 49
……
效果即,每次红信号达到能被3600整除(60s)时,将T设为0——这一步方便后面计算秒数。不关心分钟数的,可以移除该运算器。

T/S运算器,将T信号除以60,输出为S信号。
因为T最大3600,运算器除法取整,所以得出来的就是秒数。
U运算器同T运算器。将红信号 % 60,即每60次红信号重置,获得帧数。——嗯,60进制帧数怎么转换成十进制小数毫秒我已经不想研究了
反正游戏精度也达不到
M运算器将红色信号【除以】3600。3600帧即为一分钟,除法取整,即得分钟数。
然后将U、S、M随便连个东西用来当秒表
缺点是这信号排列前后横跳,比较ZZ
大的数排前面

100多小时,火箭还没打,前80小时光顾着研究教程了……教程做完一脸头大,我是谁?我在哪?我要干什么?
然后进吧了解了一下,哦,原来要搞原油啊。去看了眼原油配方,更头大了

偶然了解到可以通过电路的方式控制储油罐阀门,于是又跑去研究电路……
看到电路里有个东西叫扬声器,嚯,可以全图发警报。那我整个油量报警岂不是很爽?
然后又发现:我想让这玩意延迟/持续报警 N 秒,要怎么搞?
吧里讲计时的帖子一只手就能数过来,花了十几个小时整了各种奇怪的结构,总算把个能用的秒表(1800s误差15s)整出来了。中途一堆如何重置、计时乱飘的坑爹问题略过不表……下面直接发图。
基本结构如下:

其中运算器的【输入】参数均可用Each信号(【每个信号】)替代。使用红信号是为了便于各位理解。

重置秒表的关键在于这个判断器:

如果绿信号 < 0,输出红信号,然后判断器上的红线把输出又输入回去进行套娃。什么意思呢?
注意右侧输入红信号48k,绿信号-1。
具体怎么回事,来看两个常量运算器:
下方常量运算器始终保持开启,永远输出红信号1。

上方常量运算器输出绿信号-1。
——实际上这就是秒表重置开关,按需开启。

所以开关电路的逻辑如下:
1)绿箱子关闭,输出0,红箱子开启,始终输出1——判断器上输入为:绿色0,红色1,0<0,结果为False,不输出任何信号。
2)绿箱子打开,输出-1,红箱子开启——判断器上输入为:绿色-1,红色1,-1<0,结果为True,输出红色1,红色1回到输入端开始套娃,于是每帧(1/60s)内,判断器输出【常量箱的红信号+判断器上一刻的输出信号】,即循环+1。换言之,我们可以就此统计该秒表流逝了多少个1/60s。
算术运算器部分,下标U、M的运算器只是为了看时间方便,最下面的运算器拿来看时间(方便测试误差),实际拿掉也没关系。也就是说想读秒的话,只取用中间两个甚至一个运算器即可。


下标T的运算器,将累计的红信号除以3600并取余数【%运算符为求余】并输出T信号。
什么效果呢?
游戏帧3600 = 60s(ups没掉的情况下)
3600 % 3600 = 0,T = 0
3601 % 3600 = 1,T = 1
3649 % 3600 = 49,T = 49
……
效果即,每次红信号达到能被3600整除(60s)时,将T设为0——这一步方便后面计算秒数。不关心分钟数的,可以移除该运算器。

T/S运算器,将T信号除以60,输出为S信号。
因为T最大3600,运算器除法取整,所以得出来的就是秒数。
U运算器同T运算器。将红信号 % 60,即每60次红信号重置,获得帧数。——嗯,60进制帧数怎么转换成十进制小数毫秒我已经不想研究了

M运算器将红色信号【除以】3600。3600帧即为一分钟,除法取整,即得分钟数。
然后将U、S、M随便连个东西用来当秒表

缺点是这信号排列前后横跳,比较ZZ

