查看: 3584|回复: 9

[已经解决] 如何在游戏中更改部分图块

  [复制链接]
梦石
0
星屑
50
在线时间
68 小时
注册时间
2009-3-7
回帖
96
发表于 2011-8-12 16:23:04 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 denis466 于 2011-8-12 16:24 编辑

简单点说,就像泡泡堂一样,炸到哪个图块,哪个图块就消失,如果用事件做会很卡,所以希望能用图块解决,比如地形标志==2就能被炸什么的。

老黄鸡

梦石
4
星屑
45693
在线时间
7948 小时
注册时间
2009-7-6
回帖
13336

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2011-8-12 17:23:24 | 显示全部楼层
1,参考一下魔塔范例,挖墙的工具实现方法.
2,修改并重新载入地图,不过TileMap这种内部类改的话有点蛋疼.
3,自制地图,这种最方便.
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
50
在线时间
68 小时
注册时间
2009-3-7
回帖
96
 楼主| 发表于 2011-8-12 17:25:21 | 显示全部楼层
刚看了下,但是看不懂,能不能具体些,还有图块的ID怎么看
猫猫鱼的游戏
                                点此进入测试版发布帖
回复

使用道具 举报

虚構歪曲

梦石
0
星屑
354
在线时间
1196 小时
注册时间
2010-12-18
回帖
3842

贵宾

发表于 2011-8-12 17:26:24 | 显示全部楼层
寻找一个用 Ruby 模拟的 Tilemap 并且修改它。
(最近老有人问 Tilemap 的样子……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
回帖
705
发表于 2011-8-12 20:44:15 | 显示全部楼层
本帖最后由 ★_茄孓 于 2011-8-12 20:45 编辑

这个如果不是永久保存的话可以用
$game_map.data[x,y,z] = ID 修改
比如修改这个地图【0,0】坐标第1层的元件为385
$game_map.data[0,0,0] = 385 就可以了
自动元件 0~383
基本原件 >383
类似举例
$game_map.data[10,9,1] = 392
$game_map.data[1,5,2] = 402
Z取值0-2
x,y取值自己看地图坐标


★_茄孓于2011-8-12 20:46补充以下内容:
回4楼前辈,我已经找到国外的一个tilemap了,不错,不过还是有点漏洞··

点评

这样做是不够的,地图画面依然不会改变。  发表于 2011-8-12 20:53
您才是前辈啊……看我的注册时间就知道了……  发表于 2011-8-12 20:48
回复

使用道具 举报

虚構歪曲

梦石
0
星屑
354
在线时间
1196 小时
注册时间
2010-12-18
回帖
3842

贵宾

发表于 2011-8-12 20:55:17 | 显示全部楼层
本帖最后由 忧雪の伤 于 2011-8-12 21:12 编辑
★_茄孓 发表于 2011-8-12 20:44
这个如果不是永久保存的话可以用
$game_map.data[x,y,z] = ID 修改
比如修改这个地图【0,0】坐标第1层的元 ...
  1. if $scene.is_a? Scene_Map
  2.   $scene.instance_eval do
  3.     @spriteset.instance_eval do
  4.       @tilemap = nil
  5.       GC.start
  6.       @tilemap = Tilemap.new @viewport1
  7.       @tilemap.tileset = RPG::Cache.tileset $game_map.tileset_name
  8.       6.times do |time|
  9.         autotile_name = $game_map.autotile_names[time]
  10.         @tilemap.autotiles[time] = RPG::Cache.autotile autotile_name
  11.       end
  12.       @tilemap.map_data = $game_map.data
  13.       @tilemap.priorities = $game_map.priorities
  14.     end
  15.   end
  16. end
复制代码

点评

多建立一个精灵完全不值一提,重写无非是增加新人的理解难度罢了.  发表于 2011-8-12 21:30
你确定这样通行大丈夫?  发表于 2011-8-12 21:16
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45693
在线时间
7948 小时
注册时间
2009-7-6
回帖
13336

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2011-8-12 21:09:05 | 显示全部楼层
本帖最后由 fux2 于 2011-8-12 21:11 编辑
  1. $game_map.data[0,0,1] = 396
  2. $scene = Scene_Map.new
复制代码
当然,这种方法只适用于少量使用

点评

不可以……  发表于 2011-8-12 21:39
第二行改成$game_map.need_refresh = true可以么0.0  发表于 2011-8-12 21:34
改了$game_map.data好像就改了通行?……这是我看了Game_Map之后得出的结论……  发表于 2011-8-12 21:23
好吧,真心没想通行,于是乎再刷新通行(依然不推荐直接重新构建  发表于 2011-8-12 21:18
看我的……  发表于 2011-8-12 21:12
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

可以吃的头衔

梦石
0
星屑
1015
在线时间
424 小时
注册时间
2010-10-17
回帖
586
发表于 2011-8-12 21:21:00 | 显示全部楼层
忧雪の伤 发表于 2011-8-12 20:55

你的做法跟重建已经相差无几了,重新绘图,重新构造通行,那么,重建做了什么?

点评

还有Scene_Map的Window。  发表于 2011-8-12 21:27
角色精灵。  发表于 2011-8-12 21:22
……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
68 小时
注册时间
2009-3-7
回帖
96
 楼主| 发表于 2011-8-13 12:00:30 | 显示全部楼层
本帖最后由 denis466 于 2011-8-13 12:02 编辑
★_茄孓 发表于 2011-8-12 20:44
这个如果不是永久保存的话可以用
$game_map.data[x,y,z] = ID 修改
比如修改这个地图【0,0】坐标第1层的元 ...


我试了下这方法,可行的么,目前没发现什么弊端。游戏里要求场景转移后就变为原来的图。

点评

但是成功了啊,只是不知道有什么弊端  发表于 2011-8-13 12:46
你确定只用那句有刷新?  发表于 2011-8-13 12:20
猫猫鱼的游戏
                                点此进入测试版发布帖
回复

使用道具 举报

梦石
0
星屑
125
在线时间
0 小时
注册时间
2011-8-13
回帖
1
发表于 2011-8-13 12:07:02 | 显示全部楼层
我还是有些看不懂啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部