赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 92921 |
最后登录 | 2020-5-5 |
在线时间 | 20 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 20 小时
- 注册时间
- 2005-10-24
- 帖子
- 1571
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
这几天论坛上热衷于发教程,我也来凑几句,说说精灵.
以前一直不太明白:"为什么把显示图片写成显示精灵."其实,精灵说的就是象素点,图片是由点组成的,也就是通常说的描点.
一,如何在地图上显示文字
地图上显示文字的方法,一般分为3步:"写窗口"----"生成窗口到scene_map"---"写刷新条件".
比如:我要在地图上显示自己的名字,先写一个窗口
class Window_sizz < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在scene_map的50行loop do下面写后生成窗口@sizz_window=Window_sizz.new
“在释放活动块”下面写@sizz_window. dispose
好!进入游戏,我们就可以看到一个地方,出现了“sizz”这个字符串。
但是“sizz”这个字符旁边有个讨厌的筐子,所以请将背景颜色变成0
二,控制字符串的出现条件
一个字符始终出现在屏幕上,是不是有点不太对劲呢?所以,我们要做控制,还是2个步骤:设置窗口的可见→刷新画面
将窗口设置为不可见
self.visible = false
说明窗口可见的条件
If xxxxx
self.visible =true
end
完整就是
class Window_sizz < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false#设置窗口看不见
self.back_opacity = 0#背景颜色为0
if $game_variables[1]==1 #这个写法是我个人的习惯
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在地图上设置一个让变数1=1的事件,运行游戏
什么,什么也没有发生?
这是因为没有进行刷新,其实我也搞明白如何刷新,但是有个很另类的方式-----写个空的场景,条件满足后,把那个空的场景执行一次。
class Scene_gd
def main
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
end
def update
$scene = Scene_Map.new
end
end
地图事件上的条件"变数1=1"后写$scene=Scene_gd.new
意思就是当条件满足的时候,执行一次空的场景,然后自动切换过来
就可以解决在地图上显示文字了,至于你如何获得这个字符,就不是我今天想表达的。
二,图片的显示
请删除程序编辑器中的所有东西,我们只针对图片显示来讲解。
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
loop do
Graphics.update
end
执行以上程序,你就会发现有个小恶魔显示在屏幕的左上角。对,这就是帮助文件中图片显示的讲解。然后修改脚本,变成这个样子
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
rect=Rect.new(0,0,100,120)
color=Color.new(255,255,0,255)
devil.bitmap.fill_rect(rect,color)
loop do
Graphics.update
End
可以看到,黄色的布把恶魔给遮蔽了,这其实并不是遮蔽而是修改---把某些精灵的颜色给修改了。如果把以上程序中,颜色参数的最后一个修改成0,会有很好玩的事情发生。
再看看以下的程序
devil1 = Sprite.new
devil1.bitmap = Bitmap.new(640,480)
rect1=Rect.new(40,40,32,40)
color1=Color.new(255,255,0,255)
devil1.bitmap.fill_rect(rect1,color1)
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
p devil.z
loop do
Graphics.update
End
是不是小恶魔下面有个黄色的块?这就是真正的遮蔽了,因为我用了两个Sprite
首先执行了一个显示黄色图块的程序,然后执行了显示小恶魔的程序,所以就是看到的样子。请注意 :两个以上的Sprite,如不特别说明层次,层次按显示顺序决定(或说按书写顺序)要想修改这个顺序,可以特别说明图片层次,也就是Sprite的z属性,比如
以上程序中,加上devil1.z=1,黄色就在恶魔上面了。
出个题目
综合以上程序,编写一个程序,达到以下的效果
值得注意的是,以上的程序看起来可以显示图片,但是在游戏中就不行了,因为很卡。至于如何不卡,以及控制图片的出现,那就是最开始说的显示文字的方法了。
有个范例如下
http://rpg.blue/upload_program/files/地图上显示文字.zip
(右边的角色执行的是个错误脚本,而且范例不是显示文字,而是格子)
-------------------------------------------------
总觉得这教程写得完全不够格
|
|