Project1

标题: 如何在战斗界面实现画面反色(兼容RGD)? [打印本页]

作者: JasperCrazy    时间: 2021-8-7 22:46
标题: 如何在战斗界面实现画面反色(兼容RGD)?
本帖最后由 JasperCrazy 于 2021-8-8 18:01 编辑

已经可以在地图上实现这种效果:https://rpg.blue/thread-478869-1-1.html
但在战斗界面中可行吗
用了RGD,最好能够兼容
作者: yaminolancelot    时间: 2021-8-7 22:46
  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
复制代码

作者: JasperCrazy    时间: 2021-8-9 21:03

做了一个砸瓦鲁多技能,如果能让画面反色效果就完美了
作者: JasperCrazy    时间: 2021-8-12 19:31
本帖最后由 JasperCrazy 于 2021-8-12 20:48 编辑
yaminolancelot 发表于 2021-8-7 22:46



完美。多谢大佬
不过场景里敌人多了会有几秒钟卡顿 就很难受
作者: JasperCrazy    时间: 2021-8-13 18:25
本帖最后由 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





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