Project1
标题:
为什么在做ARPG时技能会重复施放
[打印本页]
作者:
狱冥幻翼
时间:
2013-7-15 12:35
标题:
为什么在做ARPG时技能会重复施放
本帖最后由 狱冥幻翼 于 2013-7-15 14:12 编辑
比如说我在某技能的动画显示时按了下施放该技能的键,那么这个技能释放完成后会再施放一次,在释放期间禁用inputupdate还是这样
代码
class Game_Interpreter
def before_attack
$game_switches[104] = true
end
def after_attack
$game_switches[104] = false
end
def skillA
before_attack
character = get_character(-1)
character.animation_id = 488
Fiber.yield
after_attack
end
end
class Scene_Base
def update_basic
Graphics.update
if $game_switches[104] == false
Input.update
end
update_all_windows
end
end
复制代码
作者:
Sion
时间:
2013-7-15 13:07
本帖最后由 Sion 于 2013-7-15 13:19 编辑
问题应该在Fiber.yield,一个Fiber.yield只能延迟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