赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 3545 |
最后登录 | 2013-10-13 |
在线时间 | 142 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 142 小时
- 注册时间
- 2013-4-13
- 帖子
- 92
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 爆发的妞 于 2013-6-26 14:14 编辑
小弟遇到一个地图绘制的问题,特来请教。
@eve592370698 @美丽晨露 @SuperMario
问题描述如下:
我看了Tilemap的第三方实现的方式, 里面是@layers包含三成的逻辑地图精灵,
其中绘制普通图块和绘制自动图块方法,在下面
#-------------------------------------------------------------------------- # * Draw Tile #-------------------------------------------------------------------------- def draw_tile(x, y, z, id) rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32) x *= @tilesize y *= @tilesize if @tile_width == 32 && @tile_height == 32 @layers[z].bitmap.blt(x, y, @tileset, rect) else dest_rect = Rect.new(x, y, @tilesize, @tilesize) @layers[z].bitmap.stretch_blt(dest_rect, @tileset, rect) end end #-------------------------------------------------------------------------- # * Draw Auto-Tile #-------------------------------------------------------------------------- def draw_autotile(x, y, z, tile_id) # Gets Autotile Filename autotile_num = tile_id / 48 - 1 # Reconfigure Tile ID tile_id %= 48 # Gets Generated Autotile Bitmap Section bitmap = RPG::Cache.autotile_tile(autotiles[autotile_num], tile_id, @hue) # Calculates Tile Coordinates x *= @tilesize y *= @tilesize @layers[z].bitmap.blt(x, y, bitmap, Rect.new(0, 0, 32, 32)) end
#--------------------------------------------------------------------------
# * Draw Tile
#--------------------------------------------------------------------------
def draw_tile(x, y, z, id)
rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
x *= @tilesize
y *= @tilesize
if @tile_width == 32 && @tile_height == 32
@layers[z].bitmap.blt(x, y, @tileset, rect)
else
dest_rect = Rect.new(x, y, @tilesize, @tilesize)
@layers[z].bitmap.stretch_blt(dest_rect, @tileset, rect)
end
end
#--------------------------------------------------------------------------
# * Draw Auto-Tile
#--------------------------------------------------------------------------
def draw_autotile(x, y, z, tile_id)
# Gets Autotile Filename
autotile_num = tile_id / 48 - 1
# Reconfigure Tile ID
tile_id %= 48
# Gets Generated Autotile Bitmap Section
bitmap = RPG::Cache.autotile_tile(autotiles[autotile_num], tile_id, @hue)
# Calculates Tile Coordinates
x *= @tilesize
y *= @tilesize
@layers[z].bitmap.blt(x, y, bitmap, Rect.new(0, 0, 32, 32))
end
现在我的问题是:精灵中的图片对应的区域会更新, 那么脏区域呢(即是老的数据)
还在,那么三层依次绘制的话,那么上层的脏区域不就绘制出来了吗?不甚解, 特来
求高人指点。
PS:
我自己实现的,单个精灵的情况,移动图块显示正常, 当使用3层的时候,
最上层就有了脏数据,显示了出来。 仔细看第二张图的上面部分。 |
|