Project1

标题: 如何用事件或脚本达到这种(反色)效果 [打印本页]

作者: c248611    时间: 2013-1-5 12:52
标题: 如何用事件或脚本达到这种(反色)效果
本帖最后由 c248611 于 2013-1-7 18:26 编辑









Q:是反色,不是黑白色。

@英顺的马甲    A:
RUBY 代码复制
  1. class Bitmap
  2.   PROC = ["8b4424048b4400108b40088b40108b5424088d149039d074108d76008130ffffff0083c00439c275f331c0c21000"].pack("H*")
  3.   CWP = Win32API.new("user32", "CallWindowProc", "piiii", "i")
  4.   def inverse!
  5.     CWP.call PROC, object_id, width*height, 0, 0
  6.   end
  7.   def inverse
  8.     b = self.clone
  9.     b.inverse!
  10.     return b
  11.   end
  12. end
  13. class Scene_Map
  14.   def inverse_color
  15.     @spriteset.inverse_color
  16.   end
  17. end
  18. class Spriteset_Map
  19.   def inverse_color
  20.     @tilemap.tileset = @tilemap.tileset.inverse
  21.     for i in 0..6
  22.       @tilemap.autotiles[i] = @tilemap.autotiles[i].inverse
  23.     end
  24.     @character_sprites.each{|s|s.bitmap = s.bitmap.inverse}
  25.   end
  26. end

事件调用脚本$scene.inverse_color就行了==

作者: 羞射了    时间: 2013-1-5 13:03
本帖最后由 羞射了 于 2013-1-5 13:05 编辑

我可以告诉你原理,具体你可以尝试自己研究,

要做到反色需要在所有描绘精灵(sprite)的地方建立双层精灵,这里默认是只有一个精灵图层所以默认RM是无法实现反色的。

下面的精灵刷成白色,描绘时用self.color = Color.new(255,255,255,255),可以制造一个纯白色的人物。

上层的精灵用self.blend_type = 2 减法显示。

如此就能制造出所谓的反色效果。
作者: orochi2k    时间: 2013-1-5 14:11
小朋友们排好队,偶们来用GPU做滤镜然后直接盖在RM的内存上(大雾)
作者: houyuxiaoyang    时间: 2013-1-5 14:31
反色????LZ要这种效果干啥……
作者: 精灵使者    时间: 2013-1-5 16:59
本帖最后由 精灵使者 于 2013-1-5 17:00 编辑

精灵毫无目的的飞过:可以用图块(反色图块)轻松达到此效果——PS效果:反相
另外事件的反相其实就是合成模式:减法
参考范例:惩罚者杰克的第七章(无声鸟类的传说)
作者: y610407721    时间: 2013-1-5 22:30
难道你不认为这种颜色让玩家看着很不爽吗?,我刚开始还以为你使用麻花藤的抠抠给故意搞成这个样子的= =
作者: 电锤斧王    时间: 2013-1-5 23:11
可以把和窗体一样大小的图片画再窗体上,再改变精灵的混合方式 我是这样想的不知对不对
作者: 弗雷德    时间: 2013-1-6 15:02
其实在PS做一个反色后的行走图,需要的时候事件更换一下行走图不是更方便么?……动画也是一个道理,其实地图也可以这么弄,其实……
作者: 晴兰    时间: 2013-1-6 20:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2013-1-6 22:11
晴兰 发表于 2013-1-6 20:53
class Bitmap
  PROC = ["8b4424048b4400108b40088b40108b5424088d149039d074108d76008130ffffff0083c00439 ...

没兴趣,用什么MMX啊,还有,人家要的是Tilemap你给Bitmap干啥。。
作者: 英顺的马甲    时间: 2013-1-6 23:02
本帖最后由 英顺的马甲 于 2013-1-6 23:03 编辑
引用9楼的脚本
  1. class Bitmap
  2.   PROC = ["8b4424048b4400108b40088b40108b5424088d149039d074108d76008130ffffff0083c00439c275f331c0c21000"].pack("H*")
  3.   CWP = Win32API.new("user32", "CallWindowProc", "piiii", "i")
  4.   def inverse!
  5.     CWP.call PROC, object_id, width*height, 0, 0
  6.   end
  7.   def inverse
  8.     b = self.clone
  9.     b.inverse!
  10.     return b
  11.   end
  12. end
  13. class Scene_Map
  14.   def inverse_color
  15.     @spriteset.inverse_color
  16.   end
  17. end
  18. class Spriteset_Map
  19.   def inverse_color
  20.     @tilemap.tileset = @tilemap.tileset.inverse
  21.     for i in 0..6
  22.       @tilemap.autotiles[i] = @tilemap.autotiles[i].inverse
  23.     end
  24.     @character_sprites.each{|s|s.bitmap = s.bitmap.inverse}
  25.   end
  26. end
复制代码
事件调用脚本$scene.inverse_color就行了==




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