设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1825|回复: 4
打印 上一主题 下一主题

[已经解决] 如何在战斗界面实现画面反色(兼容RGD)?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
111
在线时间
45 小时
注册时间
2019-1-14
帖子
13
跳转到指定楼层
1
发表于 2021-8-7 22:46:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
200星屑
本帖最后由 JasperCrazy 于 2021-8-8 18:01 编辑

已经可以在地图上实现这种效果:https://rpg.blue/thread-478869-1-1.html
但在战斗界面中可行吗
用了RGD,最好能够兼容

Lv3.寻梦者

梦石
0
星屑
1122
在线时间
26 小时
注册时间
2021-2-19
帖子
30
2
发表于 2021-8-7 22:46:54 | 只看该作者
  1. class Bitmap
  2.   def inverse!
  3.     self.process_color do |a|
  4.       a.size.times do |i|
  5.         a[i].red = 255-a[i].red
  6.         a[i].green = 255-a[i].green
  7.         a[i].blue = 255-a[i].blue
  8.       end
  9.     end
  10.   end
  11.   def inverse
  12.     b = self.clone
  13.     b.inverse!
  14.     return b
  15.   end
  16. end


  17. class Scene_Map
  18.   def inverse_color
  19.     @spriteset.inverse_color
  20.   end
  21. end
  22. class Spriteset_Map
  23.   def inverse_color
  24.     for i in 0..8
  25.       @tilemap.bitmaps[i] = @tilemap.bitmaps[i].inverse
  26.     end
  27.     @character_sprites.each{|s|s.bitmap = s.bitmap.inverse}
  28.   end
  29. end
  30. class Scene_Battle
  31.   def inverse_color
  32.     @spriteset.inverse_color
  33.   end
  34. end
  35. class Spriteset_Battle
  36.   def inverse_color
  37.    @back1_sprite.bitmap = @back1_sprite.bitmap.inverse
  38.    @back2_sprite.bitmap = @back2_sprite.bitmap.inverse

  39.    @enemy_sprites.each{|s|s.bitmap.inverse!}

  40.   end
  41. end
  42. # 调用方法:SceneManager.scene.inverse_color
复制代码

评分

参与人数 1+1 收起 理由
JasperCrazy + 1 认可答案

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
111
在线时间
45 小时
注册时间
2019-1-14
帖子
13
3
 楼主| 发表于 2021-8-9 21:03:23 | 只看该作者

做了一个砸瓦鲁多技能,如果能让画面反色效果就完美了
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
111
在线时间
45 小时
注册时间
2019-1-14
帖子
13
4
 楼主| 发表于 2021-8-12 19:31:25 | 只看该作者
本帖最后由 JasperCrazy 于 2021-8-12 20:48 编辑



完美。多谢大佬
不过场景里敌人多了会有几秒钟卡顿 就很难受
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
111
在线时间
45 小时
注册时间
2019-1-14
帖子
13
5
 楼主| 发表于 2021-8-13 18:25:10 | 只看该作者
本帖最后由 JasperCrazy 于 2021-8-13 18:36 编辑

最终效果:
基于大佬的脚本,改了一个运算更快的,如果只需用到静态画面的话,可以用这个:
RUBY 代码复制
  1. class Bitmap
  2.   def inverse!
  3.     self.process_color do |a|
  4.       a.size.times do |i|
  5.         a[i].red = 255-a[i].red
  6.         a[i].green = 255-a[i].green
  7.         a[i].blue = 255-a[i].blue
  8.       end
  9.     end
  10.   end
  11.  
  12.   def inverse
  13.     b = self.clone
  14.     b.inverse!
  15.     return b
  16.   end
  17. end
  18.  
  19.   class Scene_Battle
  20.     def inverse_color
  21.       @s = Sprite.new
  22.       @s.bitmap = Graphics.snap_to_bitmap
  23.       @s.bitmap = @s.bitmap.inverse
  24.     end
  25.   end
  26.  
  27.   class Scene_Battle
  28.     def recover_color
  29.      @s.bitmap.dispose
  30.     end
  31.   end
  32.  
  33. # 调用方法-开启反色:SceneManager.scene.inverse_color
  34. # 调用方法-关闭反色:SceneManager.scene.recover_color
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 02:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表