查看: 99|回复: 0

[转载发布] 简单的火焰效果

[复制链接]
  • TA的每日心情
    开心
    2024-5-10 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月九日(秋) | 显示全部楼层 |阅读模式
    使用示例及说明:
    RUBY 代码
    1. # 函数原型: (返回值为下次调用的offXY)
    2. # int fire(int dst_bmp_obj_id, int msk_bmp_obj_id, int tex_bmp_obj_id,
    3. #          int offXY, int ofx, int ofy)
    4. dll = "fire_effect.dll"
    5. fire = Win32API.new(dll, 'fire', 'LLLLLL', 'L')
    6. # 3个位图大小需一致,且宽需为4的倍数,宽与高皆小于4096
    7. dst = Bitmap.new(640, 480)
    8. msk = Bitmap.new("fire_mask3.png")  #含透明通道图片,填充色为黑色(表示显示部分)
    9. # 黑白纹理,“左右/上下补齐”(类似RMXP中的panoramas),需平滑一些
    10. tex = Bitmap.new("noise.jpg")      
    11. vpt = Viewport.new(0, 0, 640, 480)
    12. vpt.color.set(255, 255, 255)
    13. sprite = Sprite.new
    14. sprite.bitmap = dst
    15. # oxy   记录已偏移信息用 x  0 向右  < 0 向左;ofy > 0 向上  < 0 向下
    16. #       每帧调用,ofx/y的值不用太大
    17. oxy, ofx, ofy = 0, -1, 1
    18. loopdo
    19.   Graphics.update  
    20.   oxy = fire.call(dst.__id__, msk.__id__, tex.__id__, oxy, ofx, ofy)
    21. end
    复制代码



    640*480效率还行,更大的大小不推荐使用。640 * 480 我的电脑 fire 函数 650+ 次/秒。
    移动的镜头下效果并不好,作为一些镜头固定的战斗背景或菜单背景还不错。
    呈现效果和纹理、遮罩关系比较大,考虑到效率并不支持自定义颜色。



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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-21 04:26 , Processed in 0.050763 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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