设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4280|回复: 35
打印 上一主题 下一主题

[已经解决] 怎样才能更改地图部分色调,部分不更改?

[复制链接]

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
跳转到指定楼层
1
发表于 2019-5-3 15:28:12 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如果使用默认的改变色调事件,那么整个画面都会改为同一色调,我想呈现下面的效果,主角周边保持颜色,其余的地方色调改变,该如何做

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
12
 楼主| 发表于 2019-5-17 10:23:10 | 只看该作者
本帖最后由 CCD0645 于 2019-5-17 13:25 编辑
CCD0645 发表于 2019-5-17 09:13
出现了一个新问题,如图


最初的版本光照的部分过渡很自然,但是没光照的部分很毛躁

现在的版本是,没光照的部分很自然,光照的部分很毛躁

加羽化后的效果


不知道能不能解决,把两者都做得自然点
@SixRC

点评

更新完毕  发表于 2019-5-17 14:51
是我改的太急了.. 应该根据透明度和背景融合的 我现在在上课 回去就改  发表于 2019-5-17 13:46
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
11
 楼主| 发表于 2019-5-17 09:13:58 | 只看该作者
SixRC 发表于 2019-5-16 20:30
新增的函数
CCBBSS_fix1 = Win32API.new("c/ccbbss","ccbbss_fix1","lll","v")
CCBBSS_fix2 = Win32API.new ...

出现了一个新问题,如图

点评

抱歉 现在好了 之前修正的时候直接和透明度挂钩了 应该先判断透明度是否为0 不过边缘还是糙的 因为原生的透明度不是0就是255吧 得自己做下羽化  发表于 2019-5-17 10:01
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13560
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

10
发表于 2019-5-16 20:30:36 | 只看该作者
本帖最后由 SixRC 于 2019-5-17 14:51 编辑

新增的函数
RUBY 代码复制
  1. CCBBSS_fix1 = Win32API.new("c/ccbbss","ccbbss_fix1","lll","v")
  2. CCBBSS_fix2 = Win32API.new("c/ccbbss","ccbbss_fix2","llll","v")
  3. $ccbbss_test = Sprite.new
  4. $ccbbss_test.bitmap = Bitmap.new("001-Fighter01")
  5. $ccbbss_test.x = 400
  6. $ccbbss_test.y = 400
  7. $ccbbss_test.z = 666
  8. CCBBSS_fix2.call($ccbbss_test.bitmap.id,$ccbbss_test.x,$ccbbss_test.y, 800)

说明
CCBBSS_fix1(bitmap.id, x, y) 是刷新一个位图点位的亮度到最高 必须要传入位图的 id / __id__ 根据它的透明度进行刷新 透明度不为0则更改 后面的 x 和 y 是位图的屏幕坐标 这些需要自己获取
CCBBSS_fix2 多了一个参数是自定亮度 从 0-->1024  0 是纯灰  1024 不变
ccbbss.zip (715.58 KB, 下载次数: 89)

现在根据透明度向原来储存的亮度信息渐变 透明度255是满亮度/自己选择的亮度 0是不变
假如CCBBSS_fix2.call这句写在最后面 就是最后刷新立绘色彩 那么角色移动到立绘旁边不会影响它的亮度   
假如写在开头 也就是先刷新它的亮度 那之后角色移动过去刷新亮度的时候会影响到它
具体效果因为我没立绘不太清楚 你试试

点评

没事 和变量挂钩的时候可以固定第二个系数 只改第一个 会方便 比方改成 a,10 相当于 亮*a/1024 只调a就行了  发表于 2019-5-18 01:04
看漏了,多谢了。  发表于 2019-5-18 00:40
这个接口有啊 有两个函数 在7楼 分别是 render1 和 render2 2是自定义亮度的  发表于 2019-5-18 00:08
还有一点,黑白处的亮度,能不能游戏中弄个变量改亮改暗,如果麻烦的话,直接改回三楼那种亮度就行了。  发表于 2019-5-17 19:10
完美了,非常感激  发表于 2019-5-17 17:55

评分

参与人数 1+1 收起 理由
CCD0645 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13560
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

9
发表于 2019-5-16 14:18:20 | 只看该作者
我以为初版的时候你就发现了然后觉得没关系
因为现在的做法是在所有位图渲染完成后再作修改的
也就是说这时候 对话框 人物 地图 的效果都已经定死了
然后才改灰度
这时候只能选择改不改 改哪里
就像一个有选择的滤镜 但各图层已经融合了
所以理论上没办法不改对话
可以考虑的是对话框盖住底 就是对话框不透明
这样只要对话框和头像不变灰就行
你考虑下?
我先有点事

点评

好  发表于 2019-5-16 19:04
只需要立绘不变化就行了  发表于 2019-5-16 18:19
相反的想法是 立绘和对话框不受影响 固定灰色 假如你有需求 请把需求说清楚一些 我不是很理解你的想法  发表于 2019-5-16 18:14
但这样另外需要改对话框的脚本和相关素材 所以只是提议  发表于 2019-5-16 18:13
所以我的意思是把对话框做成不透明的 这样会盖住底部 然后立绘和对话框不变就可以  发表于 2019-5-16 18:11
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
8
 楼主| 发表于 2019-5-16 11:47:28 | 只看该作者
发现一个新问题,能不能将显示图片跟对话框单独分离出去,就是显示图片和显示对话框时不计入黑白的效果
目前的对话效果:

期待的效果是:


@SixRC
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13560
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

7
发表于 2019-5-15 16:30:13 | 只看该作者
好了
现在的做法是先根据需要刷新点的亮度信息
在全部刷新完后再渲染
RUBY 代码复制
  1. CCBBSS_update_alpha = Win32API.new("c/ccbbss","ccbbss_update_alpha","llll","v")
  2. CCBBSS_render1 = Win32API.new("c/ccbbss","ccbbss_render1","l","v")
  3. CCBBSS_render2 = Win32API.new("c/ccbbss","ccbbss_render2","lll","v")
  4. CCBBSS_update_alpha.call($game_player.screen_x, $game_player.screen_y - 16, 50, 100)
  5. CCBBSS_update_alpha.call(200, 200, 50, 100)
  6. CCBBSS_update_alpha.call(300, 400, 50, 100)
  7. CCBBSS_render2.call(CCBBSS_BITMAP,3,3)

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.zip (706.93 KB, 下载次数: 87)

评分

参与人数 1+1 收起 理由
CCD0645 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
6
 楼主| 发表于 2019-5-15 12:58:00 | 只看该作者
还有一个问题,假如让两个或者多个作为中心,要怎么做。
比如一个NPC,一个玩家操纵的主角,周围都保持颜色,其他部分为黑白。
@SixRC

点评

改中  发表于 2019-5-15 14:05
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13560
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

5
发表于 2019-5-5 10:39:05 | 只看该作者
改好了
ccbbss.zip (706.23 KB, 下载次数: 118)
改了分辨率 然后改了下函数导出名(ccbbss_effect1)

可以改着那个函数玩
像是转灰度 假如多位移一位(亮度减半)
就变这样了

就有晕圈的感觉了 效果好很多欸
其他可以根据需要来调整 像是色调 或是渐变算法什么的
或是别的特效

最早这做法是黄鸡想出来的
[RMVA]游戏画面滤镜(目前有马赛克/浮雕/雪花屏)

去复习了

点评

嗯  发表于 2019-5-5 18:29
谢谢了,并不会C,目前的效果也差不多足够了。  发表于 2019-5-5 18:28
就是在转灰度 >>20 那里改成21或更高 或者改一下前面 然后编译一下(不知道你会不会c)  发表于 2019-5-5 17:57
这个改亮度的函数,具体怎么操作?  发表于 2019-5-5 16:41

评分

参与人数 1+1 收起 理由
CCD0645 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
4
 楼主| 发表于 2019-5-5 01:37:31 | 只看该作者
SixRC 发表于 2019-5-4 22:53
做了一个大概
我做了一个接口 就是在显示画面前会调用一个ruby方法 这个方法自己定义(注意 这个方法中不能 ...

非常感谢,基本上可以解决了,
把$game_player.x * 32 + 16, $game_player.y * 32 + 16,改为$game_player.screen_x, $game_player.screen_y,就基本流畅了。
我现在用的分辨率是1280*736,所以还是出现一些问题,把分辨率改好就完美了。

点评

好 完课去改  发表于 2019-5-5 08:46
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 05:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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