查看: 1697|回复: 3

[已经解决] 穿装备改变战斗画面Battlebacks2的图片,听来简单却遇到困难

[复制链接]
梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-2-17
回帖
4
发表于 2016-3-13 21:16:04 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摸了几天RM,用它做了这样的一个战斗画面,三张素材:背景、武器、敌人,分别放置在Battlebacks1、Battlebacks2、Battlers文件夹里。
因为主角总是要升级,装备要越来越棒,所以我希望手持新武器的时候,战斗画面中battleback2图层也会随之改变。

所以我试着建立一个公共事件,来更换battleback2的图片,并将battleback1的图片设为无

下图是更换前

01

01


下图是更换后

03

03


没错,前景的武器虽然变了,但是背景是一团黑。我想我是不是应该将battleback1设置成一个正常的图片,但是又想到主角还是有到处乱打架的行为,战斗背景肯定不止这一张。这样下来的话,设置公共事件的工作量将会成倍地增加。于是作罢。这就是本贴所遇到的困难

所以在此请教前辈们,怎样才能在不影响战斗背景图片的情况下,以替换装备为条件开关,更替战斗前景图片?

02

02

(上图是图层顺序是理想状况,实际上1层和2层顺序应反过来,但这样的话远近逻辑关系就错了)

素材包.rar (1.02 MB, 下载次数: 18)

评分

参与人数 1星屑 +20 收起 理由
howhow1314 + 20 好有趣的想法

查看全部评分

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-3-13 21:33:52 | 显示全部楼层
本帖最后由 cinderelmini 于 2016-3-14 23:28 编辑

代码
  1. class RPG::Weapon < RPG::EquipItem
  2.   def weapon_bb2
  3.     bb2 = ""
  4.     self.note.each_line do |line|
  5.       bb2 = $1 if line[/^<武器图:\s?(.*)?>/]
  6.     end
  7.     return bb2
  8.   end
  9. end

  10. class Game_Map
  11.   def change_battleback2(battleback2_name)
  12.     @battleback2_name = battleback2_name
  13.   end
  14. end
  15. class Game_Interpreter
  16.   def 更换战斗背景2(new_bb2 = "")
  17.     $game_map.change_battleback2(new_bb2)
  18.   end
  19. end
  20. class Spriteset_Battle
  21.   def create_battleback2
  22.     @back2_sprite = Sprite.new(@viewport2)
  23.     @back2_sprite.bitmap = battleback2_bitmap
  24.     @back2_sprite.z = 1
  25.     center_sprite(@back2_sprite)
  26.   end
  27. end

  28. class Game_Actor < Game_Battler
  29.   alias sn_160314_ce change_equip
  30.   def change_equip(slot_id, item)
  31.     sn_160314_ce(slot_id, item)
  32.     if equip_slots[slot_id] == 0 and item.nil?
  33.       $game_map.change_battleback2("")
  34.       return
  35.     end
  36.     return unless item.is_a?(RPG::Weapon)
  37.     $game_map.change_battleback2(item.weapon_bb2)
  38.   end
  39.   
  40.   alias sn_160314_cebi change_equip_by_id
  41.   def change_equip_by_id(slot_id, item_id)
  42.     sn_160314_cebi(slot_id, item_id)
  43.     return unless equip_slots[slot_id] == 0
  44.     item = $data_weapons[item_id]
  45.     if equip_slots[slot_id] == 0 and item.nil?
  46.       $game_map.change_battleback2("")
  47.       return
  48.     end
  49.     return unless item.is_a?(RPG::Weapon)
  50.     $game_map.change_battleback2(item.weapon_bb2)
  51.   end
  52. end
复制代码

这段代码替换掉之前那个,一样是放到脚本列表的【Main】之上的空白位置,
在事件里一样可以使用【脚本】输入:
  1. 更换战斗背景2("武器战斗背景图的图片名字")
复制代码
来更改战斗背景2的图片。

然后,现在可以在换装备的时候自动更换战斗背景2了,
设置方法是:在数据库里面设定武器的时候,在右下角的【备注】框里的任何一个空白行输入:
  1. <武器图: 图片名不用引号>
复制代码
(PS:中文图片名未测试。)
然后更换武器的时候战斗背景图2就会跟着换了。
换上没设定图片名的武器或者卸下武器的话,背景图2就会消失。

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-2-17
回帖
4
 楼主| 发表于 2016-3-14 22:22:56 | 显示全部楼层
cinderelmini 发表于 2016-3-13 21:33
这10几行代码放到脚本列表的【Main】之上的空白位置,
然后在你换战斗背景的公共事件里,把【更改战斗背景 ...

已解决,谢谢你的帮助。
现在我又在装备武器触发公共事件上有点问题,之前处理得不够完美比如卸下武器。我再研究研究,实在不行再问哦

点评

上面楼层更新,加上了换武器自动换图的功能。  发表于 2016-3-14 23:29
回复

使用道具 举报

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-2-17
回帖
4
 楼主| 发表于 2016-3-15 16:52:56 | 显示全部楼层
cinderelmini 发表于 2016-3-13 21:33
代码

这段代码替换掉之前那个,一样是放到脚本列表的【Main】之上的空白位置,
在事件里一样 ...

执行OK,同时也测试了中文图片名,没有出现问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部