本帖最后由 SixRC 于 2019-5-17 14:51 编辑 新增的函数 RUBY 代码复制
说明 CCBBSS_fix1(bitmap.id, x, y) 是刷新一个位图点位的亮度到最高 必须要传入位图的 id / __id__ 根据它的透明度进行刷新 透明度不为0则更改 后面的 x 和 y 是位图的屏幕坐标 这些需要自己获取 CCBBSS_fix2 多了一个参数是自定亮度 从 0-->1024 0 是纯灰 1024 不变 ![]() 现在根据透明度向原来储存的亮度信息渐变 透明度255是满亮度/自己选择的亮度 0是不变 假如CCBBSS_fix2.call这句写在最后面 就是最后刷新立绘色彩 那么角色移动到立绘旁边不会影响它的亮度 假如写在开头 也就是先刷新它的亮度 那之后角色移动过去刷新亮度的时候会影响到它 具体效果因为我没立绘不太清楚 你试试 ![]() |
我以为初版的时候你就发现了然后觉得没关系![]() 因为现在的做法是在所有位图渲染完成后再作修改的 也就是说这时候 对话框 人物 地图 的效果都已经定死了 然后才改灰度 这时候只能选择改不改 改哪里 就像一个有选择的滤镜 但各图层已经融合了 所以理论上没办法不改对话 可以考虑的是对话框盖住底 就是对话框不透明 这样只要对话框和头像不变灰就行 你考虑下? 我先有点事 |
好了 现在的做法是先根据需要刷新点的亮度信息 在全部刷新完后再渲染 RUBY 代码复制
CCBBSS_update_alpha(x, y, r1, r2) 就是更新信息 每次更新一个点 CCBBSS_render1(CCBBSS_BITMAP) 是刷新画面 照常 CCBBSS_render2(CCBBSS_BITMAP, a, b) 是这样操作的 第二个第三个参数是调节圈外亮度的 算式是 *a >> b 3, 3 就是亮度 *3/8 圈子和圈子的交叠的算法是 x+y - xy/k x 和 y 是两个圈子的亮度 k 是亮度最大值 也就是x y 小的时候加的多 趋近亮度顶了就不加了 凑了半天凑出来的..看了下效果还行 ![]() ![]() |
改好了![]() 改了分辨率 然后改了下函数导出名(ccbbss_effect1) 可以改着那个函数玩 像是转灰度 假如多位移一位(亮度减半) 就变这样了 ![]() 就有晕圈的感觉了 效果好很多欸 其他可以根据需要来调整 像是色调 或是渐变算法什么的 或是别的特效 最早这做法是黄鸡想出来的 [RMVA]游戏画面滤镜(目前有马赛克/浮雕/雪花屏) 去复习了 |
SixRC 发表于 2019-5-4 22:53 非常感谢,基本上可以解决了, 把$game_player.x * 32 + 16, $game_player.y * 32 + 16,改为$game_player.screen_x, $game_player.screen_y,就基本流畅了。 我现在用的分辨率是1280*736,所以还是出现一些问题,把分辨率改好就完美了。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-10-15 19:30
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.