Project1

标题: 开坑折腾Tilemap......Plane类重制完成 [打印本页]

作者: viktor    时间: 2012-5-30 18:56
标题: 开坑折腾Tilemap......Plane类重制完成
本帖最后由 viktor 于 2012-6-2 01:44 编辑



第二步:Plane类重写 显示可以扩大分辨率的雾图形和全景图
http://rpg.blue/thread-234515-1-1.html


第1步: 在地图上显示通行性和地图标识 的调试用脚本

参考:(传送门已完成)
伪3D脚本(W3D)http://rpg.blue/thread-214379-1-1.html
Kissy的Tilemap http://rpg.blue/forum.php?mod=viewthread&tid=104661
另一种Tilemap http://rpg.blue/thread-234309-1-1.html
@yangff的测试: http://rpg.blue/forum.php?mod=viewthread&tid=177092
Plane类:http://rpg.blue/thread-208355-1-1.html

RUBY 代码复制
  1. class Tilemap_Debug < Sprite
  2.  
  3.   def initialize(viewport, tilemap)
  4.     super(viewport)
  5.  
  6.     @tilemap = tilemap
  7.  
  8.     self.bitmap= Bitmap.new(@tilemap.map_data.xsize * 32,
  9.                             @tilemap.map_data.ysize * 32)
  10.     self.z=800
  11.  
  12.     refresh
  13.   end
  14.  
  15.   def dispose
  16.     self.bitmap.dispose if self.bitmap!=nil
  17.     super
  18.   end
  19.  
  20.   def passable_color
  21.     return Color.new(64, 192, 64, 64)  # green
  22.   end
  23.  
  24.   def non_passable_color
  25.     return Color.new(255, 72, 0, 64) # red
  26.   end
  27.  
  28.   #--------------------------------------------------------------------------
  29.   # * Refresh
  30.   #--------------------------------------------------------------------------
  31.   def refresh
  32.     # background mask
  33.     self.bitmap.fill_rect(0, 0, self.bitmap.width, self.bitmap.height,
  34.                           Color.new(0, 0, 0, 32))
  35.  
  36.     for x in [email]0...@tilemap.map_data.xsize[/email]
  37.       for y in [email]0...@tilemap.map_data.ysize[/email]
  38.         draw_mapinfo(x, y)
  39.       end
  40.     end
  41.   end  
  42.  
  43.   def draw_mapinfo(x, y)
  44.     # 通行性
  45.     self.bitmap.fill_rect(Rect.new(x*32, y*32, 32, 32),
  46.          $game_map.passable?(x, y, 0) ? passable_color : non_passable_color)
  47.  
  48.     # 地图标记。选最大的那个显示
  49.     self.bitmap.draw_text(Rect.new(x*32, y*32, 32, 32),
  50.                           $game_map.terrain_tag(x, y).to_s, 1)
  51.  
  52.   end
  53. end
  54.  
  55. class Spriteset_Map
  56.   alias viktor_td_update update
  57.   def update
  58.     if @td==nil
  59.       @td=Tilemap_Debug.new(@viewport1, @tilemap)
  60.     end
  61.     @td.ox=$game_map.display_x / 4
  62.     @td.oy=$game_map.display_y / 4
  63.     @td.update
  64.     viktor_td_update
  65.   end
  66.  
  67.   alias viktor_td_dispose dispose
  68.   def dispose
  69.     @td.dispose
  70.     viktor_td_dispose
  71.   end
  72.  
  73. end

作者: 墟源    时间: 2012-5-30 19:03
哟,罗曼好好加油~~
作者: www.μ.com    时间: 2012-5-30 19:17
就是那个完全3D化的?
作者: end55rpg    时间: 2012-5-30 22:14
偶想要内部伪代码= =!


‘‘──end55rpg于2012-5-30 22:31补充以下内容:

测试完毕。。。。
使用后fps最多54我的机子
不使用最高83= =
脚本还需要优化哦,,,而且地图还是测试最小的。。。。。。。
那个脚本你发的最好别用ruby/代码框,有许多【EMIAL]乱码。。。。
’’
作者: 527391078    时间: 2012-5-30 22:45
虽然表示完全看不懂,但感觉很厉害~~
作者: asd11000    时间: 2012-5-31 00:18
这东西是做什么用的啊?我完全不懂。。
作者: 匿名    时间: 2012-5-31 03:18
再做个游戏内动态智能编辑器就更石器里对应的功能一样了(大雾)
作者: 英顺的马甲    时间: 2012-5-31 08:01
这东西老章写过了
作者: yangff    时间: 2012-5-31 16:23
求折腾VA= =
作者: 英顺的马甲    时间: 2012-6-1 08:32
pokestarter的tilemap功能已经超出了你的想象,
能把整个地图缩小还能把几个地图接到一块儿。




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