赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
先在 Main 之前插入以下脚本:unless $PRAGMA_ONCE
class Spriteset_Map
attr :viewport4
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# 生成显示端口
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 200
@viewport3.z = 5000
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport4.z = 200
# 生成元件地图
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names
@tilemap.autotiles = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
# 生成远景平面
@panorama = Plane.new(@viewport1)
@panorama.z = -1000
# 生成雾平面
@fog = Plane.new(@viewport1)
@fog.z = 3000
# 生成角色活动块
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events)
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
# 生成天气
@weather = RPG::Weather.new(@viewport1)
# 生成图片
@picture_sprites = []
for i in 1..49
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures))
end
@picture_sprites.push(Sprite_Picture.new(@viewport4,
$game_screen.pictures[50]))
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 刷新画面
update
end
alias dispose_old dispose if !method_defined? :dispose_old
def dispose
dispose_old
@viewport4.dispose
end
end
class Scene_Map
attr :spriteset
end
$PRAGMA_ONCE = 1
end 这是为了让第 50 号图片在一个独立的视口中显示,并在事件中获取这个视口;
之后就可以在事件中写如下脚本:viewport = $scene.spriteset.viewport4
# 以下四个数分别是你想要部分显示图片的矩形的 x、y 坐标、宽度、高度
viewport.rect.set(100, 100, 100, 100)
# 原点 x 和原点 y 坐标
viewport.ox = 100
viewport.oy = 100
true 然后显示图片就能看到效果了~仅限于不切换到其它 Scene
另外如果之后要让第 50 号图片恢复全屏幕显示则:viewport = $scene.spriteset.viewport2
viewport.rect.set(0, 0, 640, 480)
viewport.ox = 0
viewport.oy = 0 即可~ 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|