Project1

标题: 如何让它按三次键才执行(题目还真的不好想,请见谅) [打印本页]

作者: Green-Grox    时间: 2015-2-24 19:33
标题: 如何让它按三次键才执行(题目还真的不好想,请见谅)
如下:
if Input.trigger?(:C)
  a = true
end
if a == true
  if Input.trigger?(:C)
     b = true
  end
end
if b == true
  if Input.trigger?(:C)
     msgbox “哎”
  end
end
在这里,按一下C就直接显示“哎”了,能否按三次C在显示“哎”?(原脚本更复杂,这里简化成这个方便理解)

作者: taroxd    时间: 2015-2-24 19:45
本帖最后由 taroxd 于 2015-2-24 19:53 编辑

用游戏变量就好了

分支:按下按键(就用 trigger?)
  变量 1 += 1
分支结束

分支:如果变量 1 >= 3
...
分支结束

当然这段东西是要每帧执行
这里用事件的形式写出。用脚本也是一样的简单。
作者: 蓝儿    时间: 2015-2-24 21:09
连续按三下还是没有时间限制的三下
作者: cjlzbb    时间: 2015-2-24 21:49
会不会是顺序问题。按你这个顺序就是
  a = true
  b = true
  msgbox "哎"
了啊。

应该是这样子吧
  1. z = 0
  2. if Input.trigger?(:C) && z == 0
  3.   z = 1
  4.   a = true
  5. end
  6. if a == true
  7.   if Input.trigger?(:C) && z == 0
  8.   z = 1
  9.   b = true
  10.   end
  11. end
  12. if b == true
  13.   if Input.trigger?(:C) && z == 0
  14.   z = 1
  15.   msgbox “哎”
  16.   end
  17. end
复制代码

作者: H·H·Y    时间: 2015-2-24 23:08
本帖最后由 H·H·Y 于 2015-2-24 23:29 编辑

LZ是在按下C的瞬间,三个if同时成立,所以会给人只要按了一下就显示“唉”的感觉。

更正的大体思路是这样的:

a = 0
loop do
    if Input.trigger?(:C)
        if a == 3
            msgbox "唉"
            break
        else
            if b != true
                a += 1
                b = true
            end
        end
    else
        b = false
    end
end


因为我脚本不熟练,不知道有没有错误呢,反正我的思路是这样吧……
作者: 喵呜喵5    时间: 2015-2-24 23:33
本帖最后由 喵呜喵5 于 2015-2-24 23:45 编辑
  1. class CleanRoom
  2.   
  3.   def self.input_test

  4.     return unless Input.trigger?(:C)
  5.     # 如果没有按键则跳出
  6.   
  7.     @a ||= 0
  8.     # 生成记录按键次数的惰性实例变量
  9.   
  10.     @a += 1
  11.     # 若按键成功按下,则变量加1
  12.   
  13.     return unless @a % 3 == 0
  14.     # 没有按下三次的情况下,结束此次判断
  15.   
  16.     msgbox "a"
  17.     # 按下三次时,弹窗
  18.   
  19.   end

  20. end


  21. # 用于测试的代码,模拟了一个不停更新玩家输入的界面

  22. loop do
  23.   
  24.   Input.update
  25.   # 按键的更新,在Scene父类的update方法中也会调用
  26.   
  27.   CleanRoom.input_test
  28.   # 检查玩家按键是否满三次的方法,注意修改命名

  29. end
复制代码

作者: 双黄连2_副本2    时间: 2015-2-25 14:58
本帖最后由 taroxd 于 2015-2-25 16:40 编辑
看在你一句都没有说对的份上帮你隐藏起来吧 By taroxd

作者: 1003492579    时间: 2015-2-28 10:46
事件的事件页也许可以,刚好四个事件页是吧……………………(这方法还真恶心…………)
作者: 三途亚梦    时间: 2015-2-28 10:51
其实我觉得就楼主你自己的意思来说……

把b==true的判断写成if放在最上面
然后用 elsif a == true
再else a = true
不就好了吗……

另外代码的解读顺序不是从上往下么,为什么不利用利用呢,233
作者: 双黄连2_副本2    时间: 2015-3-8 10:07
双黄连2_副本2 发表于 2015-2-25 14:58
[fold=看在你一句都没有说对的份上帮你隐藏起来吧 By taroxd]
楼主要判断按键有没有抬起来...
按 ...

我语文不好,发图算了。{:2_254:}






欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1