Project1

标题: 有关Window_BattleStatus的修改问题 [打印本页]

作者: 阿竹天    时间: 2016-3-4 00:14
标题: 有关Window_BattleStatus的修改问题
本帖最后由 RyanBern 于 2016-3-4 13:09 编辑

主要功能,人物站位、状态栏和战斗选项根据该职业的【前卫 中卫 后卫】改变坐标,目前效果如下:


有三个问题:一、其实人物状态栏并没有实现单独窗口,我就是画了一个640*480的透明窗口然后在这之上调整了contents的坐标而已。还是想问怎么实现单独的四个窗口呢~~试过在initialize方法里面添加循环妄图建立四套坐标,但是游戏会被刷爆掉。
二、
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #  显示战斗画面同伴状态的窗口。
  5. #==============================================================================
  6.  
  7. class Window_BattleStatus < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 0, 640, 480)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     @level_up_flags = [false, false, false, false]
  15.     refresh
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 释放
  19.   #--------------------------------------------------------------------------
  20.   def dispose
  21.     super
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 设置升级标志
  25.   #     actor_index : 角色索引
  26.   #--------------------------------------------------------------------------
  27.   def level_up(actor_index)
  28.     @level_up_flags[actor_index] = true
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 刷新
  32.   #--------------------------------------------------------------------------
  33.   def refresh
  34.     self.opacity=0
  35.     self.contents.clear
  36.     self.contents.font.size = 10
  37.     @item_max = $game_party.actors.size
  38.     for i in 0...$game_party.actors.size
  39.       actor = $game_party.actors[i]
  40.       position = $data_classes[actor.class_id].position
  41.       actor_x=0
  42.       actor_y=0
  43.       case position
  44.       when 0
  45.         actor_x = 410
  46.         actor_y = i*100+20
  47.       when 1
  48.         actor_x = 495
  49.         actor_y = i*100+20
  50.       when 2
  51.         actor_x = 580
  52.         actor_y = i*100+20
  53.       end
  54.       draw_actor_name(actor, actor_x-50, actor_y)
  55.       draw_actor_hp_bar(actor,actor_x-50+11,actor_y+10+15,56 )
  56.       draw_actor_hp(actor, actor_x-50, actor_y+15, 40)
  57.       draw_actor_sp_bar(actor,actor_x-50+11,actor_y+30+10,56 )
  58.       draw_actor_sp(actor, actor_x-50, actor_y+30, 40)
  59.       if @level_up_flags[i]
  60.         self.contents.font.color = normal_color
  61.         self.contents.draw_text(actor_x-50, actor_y+50, 120, 32, "LEVEL UP!")
  62.       else
  63.         draw_actor_state(actor, actor_x-50, actor_y+50)
  64.       end
  65.     end
  66.   end
  67. end

这是我在Window_BattleStatus下的改动(其余地方实现方式大同小异)~~我觉得这个循环可能是没放对地方,给我的感觉是占用资源非常大,鼠标放在游戏窗口内会不停闪烁~~~求告知原因

三、

这个示意图是我才是我想实现的战斗站位~~大概意思就是:每个角色被分配坐标的时候会查看相同位置上的角色数,然后选择合适的站位。(不知道表达清楚了没~~)我的想法是在Game_Actor中的screen_y方法中加一个参数,但做到这里就蒙逼了~~~求指点~~。


作者: 阿竹天    时间: 2016-3-4 18:49
多谢某位大神帮我编辑帖子~~~




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