使用示例及说明:
RUBY 代码
- # 函数原型: (返回值为下次调用的offXY)
- # int fire(int dst_bmp_obj_id, int msk_bmp_obj_id, int tex_bmp_obj_id,
- # int offXY, int ofx, int ofy)
- dll = "fire_effect.dll"
- fire = Win32API.new(dll, 'fire', 'LLLLLL', 'L')
- # 3个位图大小需一致,且宽需为4的倍数,宽与高皆小于4096
- dst = Bitmap.new(640, 480)
- msk = Bitmap.new("fire_mask3.png") #含透明通道图片,填充色为黑色(表示显示部分)
- # 黑白纹理,“左右/上下补齐”(类似RMXP中的panoramas),需平滑一些
- tex = Bitmap.new("noise.jpg")
- vpt = Viewport.new(0, 0, 640, 480)
- vpt.color.set(255, 255, 255)
- sprite = Sprite.new
- sprite.bitmap = dst
- # oxy 记录已偏移信息用 x 0 向右 < 0 向左;ofy > 0 向上 < 0 向下
- # 每帧调用,ofx/y的值不用太大
- oxy, ofx, ofy = 0, -1, 1
- loopdo
- Graphics.update
- oxy = fire.call(dst.__id__, msk.__id__, tex.__id__, oxy, ofx, ofy)
- end
复制代码
640*480效率还行,更大的大小不推荐使用。640 * 480 我的电脑 fire 函数 650+ 次/秒。
移动的镜头下效果并不好,作为一些镜头固定的战斗背景或菜单背景还不错。
呈现效果和纹理、遮罩关系比较大,考虑到效率并不支持自定义颜色。

本帖来自P1论坛作者RPGzh500223,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:
https://rpg.blue/forum.php?mod=viewthread&tid=490471 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。