异星工厂吧 关注:60,369贴子:383,505
  • 24回复贴,共1

用信号实现计时功能

只看楼主收藏回复

经常遇到小伙伴想要每隔多久做什么什么,然后不会在游戏里计时,我来简单给个栗子
1.先算数运算器首尾相连,累加1输出自己,这个值作为一个基础时钟

2.再来个算数运算器,就可以根据上面的时钟进行计时了。
这里我以1秒计时为例,基础时钟模60,当A值为0时就是1秒。
你如果想要10秒的话就基础时钟模600,A为0时就是10秒。
你如果想要30秒的话就基础时钟模1800,A为0时就是30秒。

接下来说下原理,游戏每秒60帧,所以基础时钟每秒累加60,所有60倍数的数字与基础时钟取模结果为0时就是秒数。
基础时钟最大值为2147483647,超出这个值会内存溢出变为负数,这个值大概需要游戏挂机414天才能达到。
不过其实变为负数也不影响计时,只是会突然产生一个误差。
这个基础时钟可以接入公共信号网络,作为整个基地的基础时钟
end


IP属地:河南1楼2024-11-22 20:15回复
    @LOVE奎托斯 你要的计时


    IP属地:河南2楼2024-11-22 20:16
    回复
      太好了!是数电佬!我们有救了


      IP属地:广东来自iPhone客户端3楼2024-11-22 20:21
      收起回复
        有时我觉得这个游戏的tick类判断会出错,体现在我64倍速挂机时有些模块会崩,8倍速的话挂多久都没问题


        IP属地:广东来自iPhone客户端4楼2024-11-22 20:23
        收起回复
          可以用判断运算器,能重置计时


          IP属地:福建来自Android客户端5楼2024-11-23 01:18
          回复
            用一个判断运算器就行
            红线连两端
            判断选c<60*秒数-1
            输出c(1)和c(红线)


            IP属地:福建来自Android客户端6楼2024-11-23 02:17
            回复
              ps,这个需要保证满供电,供电不足会出问题


              IP属地:浙江来自Android客户端7楼2024-11-23 13:38
              收起回复
                你这个不行,现版本时钟一个判断运算器就够了,自己连自己,条件时钟信号t小于时钟时长,输出信号t的输入值以及值为1的t信号来实现每秒累加


                IP属地:陕西来自Android客户端8楼2024-11-24 02:21
                收起回复
                  一个判断器的实现方法,原理相同,此图是5秒的计时器


                  IP属地:河南9楼2024-11-24 07:06
                  收起回复
                    判断+随机选择互相连接,可以实现任意定时或任意时间间隔


                    IP属地:天津10楼2024-12-28 09:38
                    回复