Project1

标题: 关于召唤系技能的设置,请问有没有更好的方法 [打印本页]

作者: 穿越时空之剑    时间: 2019-1-16 06:26
标题: 关于召唤系技能的设置,请问有没有更好的方法
我的方法是这样:先设定能召唤生物的具体属性

再给召唤生物的职业特性里加上负的HP再生(相当于时间限制),配合死亡时触发指定公共事件的脚本,这样召唤生物HP为0时可自动离队,但可惜只在战斗中有效

然后设置一个召唤技能,在战斗和非战斗状态下都可用,使用时触发公共事件:骷髅入队

最后也是最主要的问题,为了在非战斗状态下召唤生物也能在HP为0时自动离队,我搞了个每过一段时间就自动执行一次的公共事件


这样的话不管在战斗还是非战斗状态下,召唤生物也能在HP为0时自动离队了,但是经过测试后发现有时游戏会严重卡顿
求教各位大神,有没有其他更好的设计思路……

作者: 七重    时间: 2019-1-16 09:20
这样第一眼看到设定,会觉得HP不断在削减这个设定有点不自然。。

如果是独立出一个属性,然后让在战斗中每回合削减,非战斗时每走多少步削减,会比较合理的感觉。
同时UI显示一个召唤剩余时间(回合数)的计数条什么的。

随时检查觉得卡的话,在添加状态那里加检查吧
当附加上的状态是无法战斗的时候,检查附加对象,有没有召唤物的注释什么的。
写得简单一点就。。
附加的状态编号是无法战斗的时候,才调用一次你上面写的那个事件。
作者: 蹲厕所的女孩    时间: 2019-1-16 10:39
我是这样理解的吧,你最后那个图上的并行处理开关应该是在召唤物生命值为0的时候打开的吧,然后开始每75帧检测一次有没有角色需要离队,如果每75帧都需要检测一遍这么多东西的话应该会卡顿吧
用脚本写个召唤物的类是不是会更好点?
作者: KB.Driver    时间: 2019-1-16 12:51
本帖最后由 KB.Driver 于 2019-1-16 12:56 编辑

在地图上

在战斗中


召唤生物死亡离队,不需要公共事件
RUBY 代码复制
  1. #bug说明:将召唤生物设置为初始队友会在游戏一开始就离队,原因不明
  2.  
  3. module CLD99_SUMMON_CREATURE
  4.  
  5.   SUMMON_CREATURE_CLASS_ID = [51..72]
  6.   # 在此设置召唤生物的职业ID范围
  7.   # 不要删除方括号
  8.   # 例: [2] [2,3,5,6] [2..6,8] [2..5,10..20]
  9.  
  10. end
  11.  
  12. class Game_Actor
  13.   #--------------------------------------------------------------------------
  14.   # ● 刷新
  15.   #--------------------------------------------------------------------------
  16.   alias refresh_for_remove refresh
  17.   def refresh
  18.     refresh_for_remove
  19.     if self.state?(death_state_id) && actor.summon_creature?
  20.       $game_party.remove_actor(@actor_id)
  21.     end
  22.   end
  23. end
  24.  
  25. class RPG::Actor
  26.   #--------------------------------------------------------------------------
  27.   # ● 是否为召唤生物
  28.   #--------------------------------------------------------------------------
  29.   def summon_creature?
  30.     CLD99_SUMMON_CREATURE::SUMMON_CREATURE_CLASS_ID.each do |x|
  31.       if x.is_a?(Fixnum) then return true if x == self.class_id        end
  32.       if x.is_a?(Range)  then return true if x.include?(self.class_id) end
  33.     end
  34.     return false
  35.   end
  36. end


作者: 蹲厕所的女孩    时间: 2019-1-17 10:08
本帖最后由 蹲厕所的女孩 于 2019-1-17 10:09 编辑
蹲厕所的女孩 发表于 2019-1-16 10:39
我是这样理解的吧,你最后那个图上的并行处理开关应该是在召唤物生命值为0的时候打开的吧,然后开始每75帧 ...


楼上已经解决了,可以学习下代码看看他是怎么做的




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