Project1

标题: 为什么在做ARPG时技能会重复施放 [打印本页]

作者: 狱冥幻翼    时间: 2013-7-15 12:35
标题: 为什么在做ARPG时技能会重复施放
本帖最后由 狱冥幻翼 于 2013-7-15 14:12 编辑

比如说我在某技能的动画显示时按了下施放该技能的键,那么这个技能释放完成后会再施放一次,在释放期间禁用inputupdate还是这样
代码
  1. class Game_Interpreter
  2.   def before_attack
  3.     $game_switches[104] = true
  4.   end
  5.   def after_attack
  6.     $game_switches[104] = false
  7.   end
  8.   def skillA
  9.     before_attack
  10.     character = get_character(-1)
  11.     character.animation_id = 488
  12.     Fiber.yield
  13.     after_attack
  14.   end
  15. end
  16. class Scene_Base
  17.   def update_basic
  18.     Graphics.update
  19.     if $game_switches[104] == false
  20.       Input.update
  21.     end
  22.     update_all_windows
  23.   end
  24. end
复制代码

作者: Sion    时间: 2013-7-15 13:07
本帖最后由 Sion 于 2013-7-15 13:19 编辑

问题应该在Fiber.yield,一个Fiber.yield只能延迟1帧。
这样
  1. Fiber.yield unitl character.animation_id == 0
复制代码
不过,
我感觉这种处理可能会导致很多问题。
正确的做法应该以技能是否在释放中为条件,来判断是否响应输入。
作者: 狱冥幻翼    时间: 2013-7-17 13:53
Sion 发表于 2013-7-15 13:07
问题应该在Fiber.yield,一个Fiber.yield只能延迟1帧。
这样不过,
我感觉这种处理可能会导致很多问题。

再请教下,显示动画的代码我是直接复制的不等待结束的command_212,在帮助档中查了下Fiber.yield,说是  “将环境切换到它的母线程。”   没看懂……而且我发现就算把这句删了,貌似也没什么影响,大神能否解释下Fiber.yield有什么用,我刚学代码,刚把最简单的Scene类看了一遍,还不怎么懂~
还有“正确的做法应该以技能是否在释放中为条件,来判断是否响应输入”我感觉读取输入的代码就是Input.update啊,为什么释放时禁用仍然不行?




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