小小大星球吧 关注:2,074贴子:15,234

关于把持续信号转化为单次脉冲信号

只看楼主收藏回复

制作关卡时要用到很多,例如选择器的入口接上持续信号后,其他入口再进信号就无效了。之前一直是用计时器来转换,持续信号接在计时器重置端口,计时器输出反转,计时0.1秒,这样每次会输出0.1秒的信号。

今天看了一下团队精选里3D/2D的copyable level,才发现是可以用计数器只输出0.0333秒信号。方法是把计数个数设为1,并自我清零。

然后就试了用连环计数器把这个三分之一秒脉冲传递10000次后会有多少延迟,答案是没有延迟,小小大在0.0333秒内完成了所有线路的计算。另外10000次时已经提示系统超负荷了,画面很卡。

小小大帧数cap是30FPS,所以每次计算都以0.0333秒分隔。之前总感觉有些原件会被放到下一帧去计算,逻辑上会出错,不知道跟我以前用的0.1秒有没有关系,还是没搞对优先级。


IP属地:山西来自Android客户端1楼2013-01-13 03:00回复
    这个够强力


    IP属地:江苏来自手机贴吧2楼2013-01-13 09:05
    回复
      看不懂…


      来自手机贴吧3楼2013-01-13 11:18
      回复
        脉冲信号之后应当避免连接开关式的计时器,因为每个信号都会让计时器向前走0.0333秒,会使每次计时时间产生差别,不过咱们也可以利用这一点来实现一些功能。

        最小的计时单位是0.1秒,有没有办法更小?比如使用计时器的周期只能做出10帧的动画,但是画面看起来不连贯,那么如何制作30帧的逐帧动画?

        按照照片里的连法(选择器前面的部分),就可以实现延迟0.0333秒,即在0.1内发出三个信号。这三个信号可以被计数器捕捉,大约1内能捕捉大约7.5次信号。这三个信号用OR开关连接后,0.1秒发出一次三连信号,OR开关后面计数器的数值是三个数字和的1/3倍,如果隔0.2秒发出一个三连信号,就是三个数字和的2/3倍,如果隔0.3秒发出一个三连信号,则是三个的加和(原因可能是OR开关连续的0.0333秒信号后又会花费一个0.0333秒来处理信号,所以4个信号里会丢掉一个信号,即丢失1/4。0.2秒一次时会丢失1/3信号,能知道是丢掉了4个里前3个的某一个)。AND开关一次也没有,说明他们是分开的。

        连接方法

        只说核心的吧,就是让0.0333秒的信号延迟0.0333秒后输出,连两遍就是延迟0.0666秒了。

        0.0333秒信号→倒计时计时器开关(计时0.1秒)→普通计时器开关(0.1秒)→自己的重置接口。〔原理:就是这楼的第一段话〕

        就是照片里第2行那四个,两个一组,每组延迟0.0333秒。不延迟的方法就是一楼说的自连的计数器。


        IP属地:山西来自Android客户端4楼2013-01-14 12:37
        收起回复
          @殇【兔oシ @jscztrz @zydm1412 


          IP属地:山西来自Android客户端5楼2013-01-14 12:41
          回复
            如果用10个这样的,就能每秒输出30个信号了,每个信号连接一个生成器,生成一帧动画。我想大概不会出现信号丢失。


            IP属地:山西来自Android客户端6楼2013-01-14 12:43
            收起回复
              另外延迟0.033输出意义不太大,假设你真做到了,系统会因为处理负担太重产生不必要的延迟


              7楼2013-01-14 13:52
              收起回复
                大概看懂点了。。容我慢慢研究。


                来自手机贴吧8楼2013-01-14 18:25
                回复
                  另外需要说明的是,计数器对负方向是没有响应的,所以要让自循环计数器对负方向其作用,需要在前面加一个0.1秒计时器,先将信号转化为0.1秒的普通信号。0.1秒计时器接法:信号接在计时器的重置端口,计时器设定为反向输出,计时器开关接口不接信号。


                  IP属地:山西9楼2013-01-14 19:57
                  收起回复
                    像这种电路就能用到,我下面换图层需要检测到“X”信号AND选择器2#,同时“X”信号也有把选择器就切换到1#的作用。不加延迟,换图层就不起作用。

                    需要注意,第二个计时器的当前时间要设成0,要不它就没法重置自己。


                    IP属地:山西来自Android客户端12楼2013-01-16 11:15
                    收起回复
                      不管入口时单个信号还是持续信号,都起作用。

                      还有一种情况也要用到

                      1.布娃娃碰撞任何物体时进入悬停状态
                      2.布娃娃碰到地面时解除失重状态

                      这里两个都是碰撞感应器,系统默认的优先级是碰撞任何物体比碰撞带标签的物体要高。这里给1号加了延迟。


                      IP属地:山西来自Android客户端13楼2013-01-16 11:28
                      回复
                        用not自接就是方便,每秒15帧基本就能看出连贯的动作了,只要每帧差距不太大


                        IP属地:山西来自Android客户端14楼2013-01-19 13:09
                        收起回复
                          原来是这样


                          来自Android客户端15楼2015-01-30 10:07
                          收起回复

                            真正延迟一帧的电路应该这样接,选择器切换档位就会延迟一帧,后面两个是自重置的计数器。


                            IP属地:山西16楼2015-01-31 09:40
                            回复