Project1

标题: 关于图块的覆盖模式! [打印本页]

作者: Hjdie    时间: 2011-1-11 22:25
标题: 关于图块的覆盖模式!
本帖最后由 Hjdie 于 2011-1-12 20:08 编辑

不好描述。就上图吧
   这个是画的时候。

  进入游戏后。

嗯。在XP里我知道自动原件可以把那些柱子全部自动挡住。
那么VX里有没有这种功能呢?
作者: 诡异の猫    时间: 2011-1-11 22:34
回复 Hjdie 的帖子

不要画柱子下面那一块不就行了- -
作者: px.凤翔九天    时间: 2011-1-11 22:50
我倒觉得是你的柱子的图层比自动原件的墙高...所以挡不住的...
作者: 塞巴斯特    时间: 2011-1-11 23:10
还不简单,如果想元件挡住建筑,就是先画建筑,后画元件,这样就可以挡住。

相反,想挡住元件,就是先画元件,再画建筑物。
作者: qllmkaen    时间: 2011-1-11 23:20
  1. #==============================================================================
  2. # ■ VX图层无穷无尽
  3. #------------------------------------------------------------------------------
  4. #  原作BY:S. F. LaValle   翻译、修改BY:仲秋启明
  5. #  使用方法:在子地图名的最后加上“LX”(X为第几添加层)
  6. #==============================================================================
  7. class Scene_Map < Scene_Base
  8.   alias start_2 start
  9.   alias update_2 update
  10.   attr_reader :map_layer_spritesets
  11.   def start
  12.     start_2
  13.     setup_map_layers
  14.   end
  15.   def update_transfer_player
  16.     return unless $game_player.transfer?
  17.     fade = (Graphics.brightness > 0)
  18.     fadeout(30) if fade
  19.     @spriteset.dispose
  20.     for i in 0...@map_layer_spritesets.size
  21.       @map_layer_spritesets[i].dispose
  22.     end
  23.     $game_player.perform_transfer
  24.     $game_map.autoplay
  25.     $game_map.update
  26.     Graphics.wait(15)
  27.     @spriteset = Spriteset_Map.new
  28.     setup_map_layers
  29.     fadein(30) if fade
  30.     Input.update
  31.   end
  32.   def setup_map_layers
  33.     maps = load_data("Data/MapInfos.rvdata")
  34.     game_map_name = maps[$game_map.map_id].name
  35.     @map_layers = []
  36.     @map_layer_spritesets = []
  37.     map_names = []
  38.     layer_map_names = []
  39.     layer_index = []
  40.     c = maps.keys
  41.     d = c.max
  42.     for i in 1..d
  43.       unless maps[i] == nil
  44.         a = nil
  45.         map_names.push(maps[i].name)
  46.         a = maps[i].name =~ /(l|L)\d+/
  47.         layer_map_names.push(maps[i].name) if a != nil
  48.         layer_index.push(maps.index(maps[i])) if a != nil
  49.       end
  50.     end
  51.     for string in layer_map_names
  52.       string.chop! until string == game_map_name or string == ""
  53.     end
  54.     if layer_map_names.include?(game_map_name)
  55.       for i in 0...layer_map_names.size
  56.         if layer_map_names[i] != ""
  57.           map = Game_Map.new
  58.           map.setup(layer_index[i])
  59.           @map_layer_spritesets.push(Spriteset_Map_2.new(map))
  60.           @map_layers.push(map)
  61.         end
  62.       end
  63.     end
  64.   end
  65.   def update
  66.     update_2
  67.     for i in 0...@map_layer_spritesets.size
  68.       @map_layers[i].update
  69.       @map_layer_spritesets[i].update
  70.     end
  71.   end  
  72. end

  73. class Spriteset_Map_2 < Spriteset_Map
  74.   def initialize(layer)
  75.     @layer = layer
  76.     create_viewports
  77.     create_tilemap
  78.     update
  79.   end
  80.   def update
  81.     update_tilemap
  82.     update_viewports
  83.   end
  84.   def dispose
  85.     @tilemap.dispose
  86.   end
  87.   def create_tilemap(a1 = nil, a2 = nil, a3 = nil, a4 = nil, a5 = nil, b = nil, c = nil, d = nil, e = nil)
  88.     @tilemap = Tilemap.new(@viewport1)
  89.     @tilemap.bitmaps[0] = (a1 == nil ? Cache.system("TileA1") : a1)
  90.     @tilemap.bitmaps[1] = (a2 == nil ? Cache.system("TileA2") : a2)
  91.     @tilemap.bitmaps[2] = (a3 == nil ? Cache.system("TileA3") : a3)
  92.     @tilemap.bitmaps[3] = (a4 == nil ? Cache.system("TileA4") : a4)
  93.     @tilemap.bitmaps[4] = (a5 == nil ? Cache.system("TileA5") : a5)
  94.     @tilemap.bitmaps[5] = (b == nil ? Cache.system("TileB") : b)
  95.     @tilemap.bitmaps[6] = (c == nil ? Cache.system("TileC") : c)
  96.     @tilemap.bitmaps[7] = (d == nil ? Cache.system("TileD") : d)
  97.     @tilemap.bitmaps[8] = (e == nil ? Cache.system("TileE") : e)
  98.     @tilemap.map_data = @layer.data
  99.     @tilemap.passages = @layer.passages
  100.   end
  101.   def update_viewports
  102.     @viewport1.tone = @layer.screen.tone
  103.     @viewport1.ox = @layer.screen.shake
  104.     @viewport2.color = @layer.screen.flash_color
  105.     @viewport3.color.set(0, 0, 0, 255 - @layer.screen.brightness)
  106.     @viewport1.update
  107.     @viewport2.update
  108.     @viewport3.update
  109.   end
  110. end
复制代码
把要覆盖的画在顶层的图层
作者: 木葬枫    时间: 2011-1-12 11:45
画的时候不画出来不就好了- -!
作者: 死伤殆尽    时间: 2011-1-12 12:02
画的时候就别画柱子下面那个图块啊笨蛋,居然还有人拿脚本出来,你们到底怎么想的啊
作者: Hjdie    时间: 2011-1-12 20:05
本帖最后由 Hjdie 于 2011-1-12 20:06 编辑

首先我解释下为什么要把墙下面的画出来。
如果你不画墙下面的柱子。那么角色走过去。就可以畅通无阻的走过去。那么我们露出来的柱子是怎么一回事?是蛋痛吗?虽然说游戏是虚假的世界。但是也得有些常人可以接受的定理啊。难道你在游戏世界里。你发现自己走过去的一个地方上面有个柱子。你会怎么想。我一定会想。“这是那个XX美术的杰作啊。这么XX。”

然后感谢给出脚本的同学。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1