赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 5108 |
最后登录 | 2016-10-18 |
在线时间 | 59 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 59 小时
- 注册时间
- 2015-12-24
- 帖子
- 41
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 RyanBern 于 2016-3-4 13:09 编辑
主要功能,人物站位、状态栏和战斗选项根据该职业的【前卫 中卫 后卫】改变坐标,目前效果如下:
有三个问题:一、其实人物状态栏并没有实现单独窗口,我就是画了一个640*480的透明窗口然后在这之上调整了contents的坐标而已。还是想问怎么实现单独的四个窗口呢~~试过在initialize方法里面添加循环妄图建立四套坐标,但是游戏会被刷爆掉。
二、
#============================================================================== # ■ Window_BattleStatus #------------------------------------------------------------------------------ # 显示战斗画面同伴状态的窗口。 #============================================================================== class Window_BattleStatus < Window_Base #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 480) self.contents = Bitmap.new(width - 32, height - 32) @level_up_flags = [false, false, false, false] refresh end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose super end #-------------------------------------------------------------------------- # ● 设置升级标志 # actor_index : 角色索引 #-------------------------------------------------------------------------- def level_up(actor_index) @level_up_flags[actor_index] = true end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.opacity=0 self.contents.clear self.contents.font.size = 10 @item_max = $game_party.actors.size for i in 0...$game_party.actors.size actor = $game_party.actors[i] position = $data_classes[actor.class_id].position actor_x=0 actor_y=0 case position when 0 actor_x = 410 actor_y = i*100+20 when 1 actor_x = 495 actor_y = i*100+20 when 2 actor_x = 580 actor_y = i*100+20 end draw_actor_name(actor, actor_x-50, actor_y) draw_actor_hp_bar(actor,actor_x-50+11,actor_y+10+15,56 ) draw_actor_hp(actor, actor_x-50, actor_y+15, 40) draw_actor_sp_bar(actor,actor_x-50+11,actor_y+30+10,56 ) draw_actor_sp(actor, actor_x-50, actor_y+30, 40) if @level_up_flags[i] self.contents.font.color = normal_color self.contents.draw_text(actor_x-50, actor_y+50, 120, 32, "LEVEL UP!") else draw_actor_state(actor, actor_x-50, actor_y+50) end end end end
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
# 显示战斗画面同伴状态的窗口。
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
super
end
#--------------------------------------------------------------------------
# ● 设置升级标志
# actor_index : 角色索引
#--------------------------------------------------------------------------
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.opacity=0
self.contents.clear
self.contents.font.size = 10
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
position = $data_classes[actor.class_id].position
actor_x=0
actor_y=0
case position
when 0
actor_x = 410
actor_y = i*100+20
when 1
actor_x = 495
actor_y = i*100+20
when 2
actor_x = 580
actor_y = i*100+20
end
draw_actor_name(actor, actor_x-50, actor_y)
draw_actor_hp_bar(actor,actor_x-50+11,actor_y+10+15,56 )
draw_actor_hp(actor, actor_x-50, actor_y+15, 40)
draw_actor_sp_bar(actor,actor_x-50+11,actor_y+30+10,56 )
draw_actor_sp(actor, actor_x-50, actor_y+30, 40)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x-50, actor_y+50, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x-50, actor_y+50)
end
end
end
end
这是我在Window_BattleStatus下的改动(其余地方实现方式大同小异)~~我觉得这个循环可能是没放对地方,给我的感觉是占用资源非常大,鼠标放在游戏窗口内会不停闪烁~~~求告知原因
三、
这个示意图是我才是我想实现的战斗站位~~大概意思就是:每个角色被分配坐标的时候会查看相同位置上的角色数,然后选择合适的站位。(不知道表达清楚了没~~)我的想法是在Game_Actor中的screen_y方法中加一个参数,但做到这里就蒙逼了~~~求指点~~。
|
|