Project1

标题: 怎么按A,打开条件开关1,再按一下,打开开关2。已解决 [打印本页]

作者: 飞翔的小鸟3    时间: 2017-9-21 18:53
标题: 怎么按A,打开条件开关1,再按一下,打开开关2。已解决
本帖最后由 飞翔的小鸟3 于 2017-9-22 18:57 编辑

这三个:
Input.press?(sym)
Input.trigger?(sym)
Input.repeat?(sym)
我按下去他们都会一起执行。暂时想不到其他办法.....
大佬们给个答案把

顺序是这样子的 一直按A, 打开开关1   =-》  开关2    -=》开关1   -=》  开关2  无限循环
作者: imsy    时间: 2017-9-21 19:25
@var ||= 1
if Input.trigger?(:X)
  $game_switches[@var] = true
  @var = (@var == 1 ? 2 : 1 )
end
丢并行处理。以及这段只负责打开开关 不负责关闭开关

作者: 喵呜喵5    时间: 2017-9-21 19:43
本帖最后由 喵呜喵5 于 2017-9-21 19:45 编辑

Input.press?(sym)
一直按着时,永远为 true

Input.trigger?(sym)
按下的瞬间为 true

Input.repeat?(sym)
按下的瞬间为 true,之后每隔一段时间为 true 一次

所以你的一直按是之不松开还是连打?
如果是不松开:

  1. if Input.repeat?(sym)
  2.   unless swi_a
  3.     swi_a = true
  4.     swi_b = false
  5.   else
  6.     swi_a = false
  7.     swi_b = true
  8.   end
  9. end
复制代码


如果是连打:

  1. if Input.trigger?(sym)
  2.   unless swi_a
  3.     swi_a = true
  4.     swi_b = false
  5.   else
  6.     swi_a = false
  7.     swi_b = true
  8.   end
  9. end
复制代码

作者: 飞翔的小鸟3    时间: 2017-9-21 20:28
喵呜喵5 发表于 2017-9-21 19:43
Input.press?(sym)
一直按着时,永远为 true




还有,我按照楼上方法有时按下去按键不灵

我说的是连打
作者: 喵呜喵5    时间: 2017-9-21 20:36
飞翔的小鸟3 发表于 2017-9-21 20:28
还有,我按照楼上方法有时按下去按键不灵

我说的是连打

3楼只是给个思路,并不是直接用的……
如果在对象里请用实例变量或全局变量储存当前开关的状态
作者: 飞翔的小鸟3    时间: 2017-9-21 20:45
喵呜喵5 发表于 2017-9-21 20:36
3楼只是给个思路,并不是直接用的……
如果在对象里请用实例变量或全局变量储存当前开关的状态 ...

我改了
前面定义一个@swi_a = nil
  1. if Input.trigger?(:X)
  2.   unless @swi_a == true
  3.     @swi_a = true
  4.     @swi_b = false
  5.     $game_switches[15] = true
  6.   else
  7.     @swi_a = false
  8.     @swi_b = true
  9.     $game_switches[17] = true
  10.   end
  11. end
复制代码


可以用了,之前忘记设定 @swi_a的值,怪不得一直报错。

然后有时按3、4都没反应,键盘问题?因为有时可以连发,所以应该不是脚本的问题。(我做的枪的战斗脚本)




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