赞 | 1 |
VIP | 0 |
好人卡 | 0 |
积分 | 5 |
经验 | 0 |
最后登录 | 2024-10-4 |
在线时间 | 43 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 466
- 在线时间
- 43 小时
- 注册时间
- 2021-9-4
- 帖子
- 14
|
2楼
楼主 |
发表于 2023-5-21 17:20:28
|
只看该作者
- #==============================================================================
- # ■ Alpha Mask Util for RPG Maker VX
- #------------------------------------------------------------------------------
- # 说明:
- # 该脚本提供了一种在 RPG Maker VX 中使用 alpha mask 实现部分遮罩的方法。您可以简单地调用该脚本,根据需要设置输入和输出路径即可。
- #
- # 使用:
- # 在脚本调用事件命令中,添加 call_script 指令,
- #
- # Scene_Map: $scene = Scene_AlphaMask.new
- # Scene_Battle:$scene = Scene_AlphaMask.new
- #
- # 将您所需的原始图像和蒙版图像放到路径:"Graphics/Pictures/alphamask/" 中,并将名称记作:
- #
- # - Target Image: target.png
- # - Mask Image: mask.png
- #==============================================================================
- module AlphaMaskUtil
- class << self
- def run(work_dir, target_file, mask_file)
- Graphics.freeze
- src = load_picture(work_dir, target_file)
- mask = load_picture(work_dir, mask_file)
- w = [src.width, mask.width].min
- h = [src.height, mask.height].min
- temp_bitmap = Bitmap.new(w, h)
- for y in 0...h
- for x in 0...w
- color1 = src.get_pixel(x, y)
- color2 = mask.get_pixel(x, y)
- alpha = color2.alpha
- red = (color1.red * alpha / 255.0).to_i
- green = (color1.green * alpha / 255.0).to_i
- blue = (color1.blue * alpha / 255.0).to_i
- temp_bitmap.set_pixel(x, y, Color.new(red, green, blue))
- end
- end
- sprite = Sprite.new
- sprite.bitmap = src
- Graphics.transition
- sprite.bitmap.blt(0, 0, temp_bitmap, Rect.new(0, 0, w, h), 0x40) #设定 alpha 混合的方式为 叠加(alpha >> 1)
- sprite.visible = true
- loop do
- update_sprite(sprite)
- Graphics.update
-
- break if Input.trigger?(:C) #可以按键盘C键来退出,也可以换成其它键位或按钮
- end
- Graphics.freeze
- sprite.dispose
- end
- def load_picture(work_dir, filename)
- Bitmap.new("#{work_dir}#{filename}")
- end
- def update_sprite(sprite)
- sprite.update unless sprite.disposed?
- end
- end
- end
- class Scene_AlphaMask < Scene_Base
- def start
- super
- @work_dir = "Graphics/Pictures/alphamask/"
- @target_file = "target.png"
- @mask_file = "mask.png"
- AlphaMaskUtil.run(@work_dir, @target_file, @mask_file)
- exit_scene
- end
- def exit_scene
- fade_out(60)
- SceneManager.scene.dispose
- end
- end
复制代码 |
|