查看: 2837|回复: 3

[RMXP发布] RM中精灵的合成方式解释

[复制链接]
梦石
0
星屑
60
在线时间
66 小时
注册时间
2011-5-25
回帖
64
发表于 2011-12-23 16:22:37 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 shoed 于 2012-1-3 21:40 编辑

原文地址
http://blog.sina.com.cn/s/blog_71037efa0100zsr1.html


RpgMaker XP中的精灵类中的功能非常强大,这里谈一下其中的一个属性:

blend type

这个属性有三个值,(0:正常,1:加法,2:减法)。

注意这个属性只能是作用于两个精灵,Bitmap是没有这个属性的,也就是说只有当两个精灵相叠加时,给上一层的精灵设置这个值才能产生效果,下一层的精灵如果设置这个值只能对再下一层的精灵产生效果。

那么这个属性如何使用呢?

首先准备一张底图,这张图作为最底层的精灵使用。

0、正常

没有什么特殊效果,只是将上一层的精灵叠加在底图上,我的上一层精灵使用的是一张白色的图。

1、加法

底图上的象素颜色+上一层精灵中位图的象素颜色,当颜色值超过255时取最大值255。可以看出如果我的上一层精灵使用的是白色图,那么与底图象素相加,还是白色,白色是颜色是255,相加后也不能超出255,所以还是白色。


如果我的上一层精灵使用的黑色图,那么与底图象素相加,就是底图颜色,黑色图颜色是0,相加后只能是底图上的颜色,任何值与0相加还是那个值(a + 0 = a)。从下图可以看到,上一层精灵已经看不到了。



2、减法

底图上的象素颜色-上一层精灵中位图的象素颜色,当颜色值小于0时,取最大值0,颜色只能是正数嘛。现在我将上一层精灵所使用的图片改成黑色,你可以看到与上图相同的效果,相减后还是底图上的颜色,因为任何值与0相减还是那个值(a - 0 = a)。

但如果上一层精灵使用的图片改成白色,效果就又不一样了,底图上的象素颜色不可能超过255,当减去255后差值就会变成负数,按取最大值0的原则,上一层的精灵图就会变成黑色。


下面讲一下在RM中经常会被使用到的特效,我这里用伪代码加以说明。

首先画一个底图精灵
底图精灵=Sprite.new
底图精灵.bitmap=Bitmap.new("Graphics/Titles/底图.png")
再在上一层画一个显示白色图的精灵
上一层精灵= Sprite.new
上一层精灵.bitmap=Bitmap.new("Graphics/Titles/上一层图.png")
做完这两步你就能看到如下的效果,这里偏移了上一层精灵,只是作为演示。


最关键的一步了,准备一张遮罩图,注意遮罩图是有讲究的,黑色区,白色区可以根据你想达到的效果来做,我这里使用了一张带有透明效果的图片,使用透明的边界就可以不用考虑边界上的颜色了。


这两句代码最重要了
遮罩图=Bitmap.new("Graphics/Titles/mask.png")
上一层精灵.bitmap.stretch_blt(Rect.new(0,0,400,400), 遮罩图,Rect.new(0,0,810,810))
这两句所起的作用就是将遮罩图的象素拷贝到上一层精灵的位图中,透明象素不会被拷贝,上一层精灵就会变成如下如的样子。


给上一层精灵加上混合效果

点评

那个,图片外链显示不能,上传吧= =  发表于 2011-12-24 17:51

末日咏叹者

梦石
0
星屑
50
在线时间
235 小时
注册时间
2010-3-16
回帖
163
发表于 2011-12-23 16:29:44 | 显示全部楼层
图片显示不能,需右键-属性-复制地址再重新打开……
回复

使用道具 举报

梦石
0
星屑
49
在线时间
412 小时
注册时间
2011-12-10
回帖
897
发表于 2011-12-23 17:42:40 | 显示全部楼层
诶,头一次看见新浪在6R出现。
古代素材爱好群Q249853011
回复

使用道具 举报

梦石
0
星屑
50
在线时间
124 小时
注册时间
2011-1-22
回帖
17
发表于 2011-12-26 21:48:09 | 显示全部楼层
很棒的講解哦,雖然圖片要看有點不方便

謝謝囉
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部