Project1

标题: 如何把角色行走图显示到战斗画面中? [打印本页]

作者: xggzga117    时间: 2014-7-20 10:54
标题: 如何把角色行走图显示到战斗画面中?
如题,鄙人的战斗系统是原版的,应该不会冲突。
(PS:只要显示图片,不要动画)
求解,多谢!
作者: taroxd    时间: 2014-7-20 10:59
本帖最后由 taroxd 于 2014-7-20 11:02 编辑

修改 Spriteset_Battle#create_actors 方法

由于你的提问过于模糊(比如没有说显示在哪个位置等等),我无法给出实例(其实就是懒

具体的实现交给楼下的大触吧。

P.S. 或者你可以使用 SideView 战斗系统
作者: xggzga117    时间: 2014-7-20 12:25
实例可以随便给个,位置什么的鄙人自己改。
作者: 忧雪の伤    时间: 2014-7-20 13:11
  1. module Actor_Pictures
  2.   Cache = {}
  3.   # 文件名。和角色编号相同的数组编号。
  4.   FileName = []
  5.   # 例如 FileName[1] = 'Graphics/Battlers/Actor 1'
  6.   FileName[1] = 'Graphics/Battlers/Actor 1'
  7.   def self.need_refresh? battler
  8.     Actor_Pictures::FileName[battler.id] != Actor_Pictures::Cache[battler][1]
  9.   end
  10. end
  11.   
  12. class Game_Actor
  13.   def use_sprite?
  14.     true
  15.   end
  16.   def screen_x
  17.     # 自行计算坐标
  18.     (index + 1) * (544 / 4)
  19.   end
  20.   def screen_y
  21.     # 自行计算坐标
  22.     416
  23.   end
  24.   def screen_z
  25.     100
  26.   end
  27. end

  28. class Sprite_Battler
  29.   alias tone_update_bitmap update_bitmap
  30.   def update_bitmap *args
  31.     return tone_update_bitmap *args if battler.is_a? Game_Enemy
  32.     return unless battler.is_a? Game_Actor
  33.     Actor_Pictures::Cache[battler] ||= []
  34.     if Actor_Pictures::Cache[battler][1].nil? or
  35.         Actor_Pictures.need_refresh? battler
  36.       self.bitmap = Bitmap.new Actor_Pictures::FileName[battler.id]
  37.       Actor_Pictures::Cache[battler][0] = self.bitmap
  38.       Actor_Pictures::Cache[battler][1] = Actor_Pictures::FileName[battler.id]
  39.       init_visibility
  40.     end
  41.   end
  42. end
复制代码
UI> 依然是直接写好的传统 da☆ze ~
作者: taroxd    时间: 2014-7-20 13:11

瞎写了一段:

RUBY 代码复制
  1. class Spriteset_Battle
  2.  
  3.   alias ca_20140720 create_actors
  4.   def create_actors
  5.     ca_20140720
  6.     s = @leader_sprite = Sprite.new(@viewport1)
  7.     actor = $game_party.leader
  8.     cn = actor.character_name
  9.     s.bitmap = bitmap = Cache.character(cn)
  10.     sign = cn[/^[\!\$]./]
  11.     if sign && sign.include?('$')
  12.       cw = bitmap.width / 3
  13.       ch = bitmap.height / 4
  14.     else
  15.       cw = bitmap.width / 12
  16.       ch = bitmap.height / 8
  17.     end
  18.     s.ox = cw / 2
  19.     s.oy = ch
  20.     index = actor.character_index
  21.     sx = (index % 4 * 3 + 1) * cw
  22.     sy = (index / 4 * 4) * ch
  23.     s.src_rect.set(sx, sy, cw, ch)
  24.     s.x = 50
  25.     s.y = 50
  26.     s.z = 100
  27.   end
  28.  
  29.   alias da_20140720 dispose_actors
  30.   def dispose_actors
  31.     da_20140720
  32.     @leader_sprite.dispose
  33.   end
  34.  
  35. end

作者: xggzga117    时间: 2014-7-20 13:25
3楼脚本测试可用。
4楼的好像有问题,加进去没有显示。




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