设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

【教程】绘制地图上的桥

查看数: 6752 | 评论数: 10 | 收藏 12
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-3-8 11:29

正文摘要:

本帖最后由 RyanBern 于 2014-12-12 17:34 编辑 不知道有人遇到过这种情况没有,在一张地图上画一座桥,但是要求角色在桥上能够通过,也能够在桥下穿行,就像下图这样: 在这里,需要说明的是$game_map.replac ...

回复

RyanBern 发表于 2017-3-25 09:52:14
guoxiaomi 发表于 2017-3-23 23:27
怒挖一记坟~

一晃三年已过,不知RB叔有没有想到这个方案呢?

以前没想过,如果是现在可能会想到吧?因为强改地图图快这个做法其实是很特殊的,一般如果改动不大完全就可以通过铺一个事件来完成了。

不过两种做法的想法是一样的,在操作上可能略有区别
如果是我提出的方案,那么需要准备另外一组图快,可能操作上比较方便无脑一些。
如果是改图块的方式,那么两个形态的图块的位置就要对应好,这本身操作上难度要大一些。

然后我现在怀疑是不是不需要考虑存档,因为存档的时候是直接读取 $game_map,所以改动的属性会存下来,直到切换地图才会重置。
guoxiaomi 发表于 2017-3-23 23:27:10
本帖最后由 guoxiaomi 于 2017-3-23 23:40 编辑

怒挖一记坟~

一晃三年已过,不知RB叔有没有想到这个方案呢?

有一个只用事件就能解决的方案。修改的是$game_map.data,所以也不受存档影响。

需要预先处理一下原来的Tileset。主楼中用到的是“山道”地图,在PS里把此地图纵向复制一次。这样就有 2 组一模一样的图块。

原来的图块不管,在下面的复制组里设置优先级,不需要设置通行度。如图:


然后在上桥处设置事件,触发条件是与事件接触
RUBY 代码复制
  1. data = $game_map.data
  2. ary1 = [553,561,569,579,580,581,556,564]
  3. ary2 = ary1.collect{|x| x + 224}
  4. for x in 0..$game_map.width
  5. for y in 0..$game_map.height
  6. for z in 0..2
  7. if ary2.include? data[x,y,z]
  8.   data[x,y,z] -= 224
  9. end;end;end;end

下桥处设置事件,触发条件是与事件接触
RUBY 代码复制
  1. data = $game_map.data
  2. ary1 = [553,561,569,579,580,581,556,564]
  3. ary2 = ary1.collect{|x| x + 224}
  4. for x in 0..$game_map.width
  5. for y in 0..$game_map.height
  6. for z in 0..2
  7. if ary1.include? data[x,y,z]
  8.   data[x,y,z] += 224
  9. end;end;end;end


所以这里应该很容易就看出来了,当下桥的时候,原来的地图图块已经被更换为复制组,复制组的图块设为高的优先级(☆5)和穿透,所以看上去是角色“在桥下面行走”。上桥的时候再换回原来的图块即可。

具体为什么是这些数字,图块元件的ID是384+元件在Tileset图中的位置,自动元件是不算在内的。这个从上到下数一下就可以了,或者下面的脚本,x,y是坐标,z=0-2是图层。
RUBY 代码复制
  1. p $game_map.data[x,y,z]

这段脚本可以进行优化,比如for循环里只写桥所在的范围,但是RGSS不是很care这点运算量。
复制的时候也不一定要复制整个Tileset,只复制桥的那部分就行~但是整个一起复制快得多……
myownroc 发表于 2014-9-15 01:45:29
搞个三远景直接贴图感觉更靠谱
虚小元 发表于 2014-9-14 23:29:29
这个不错,感谢楼主分享(ΦωΦ)
薯片小易 发表于 2014-6-23 22:06:21
我想请教一下楼主如果竖直的楼梯也想实现这种效果该怎么办?
chd114 发表于 2014-3-16 02:47:12
把开关改成变量= =
神秘影子 发表于 2014-3-9 20:11:08
把桥设为与主角同级,在桥的那格上制作一个与主角同级的接触事件,当主角朝向为上/下时接触它(桥下),则主角开启穿透且向前移动行走图同时暂时透明化、移动到桥下那边时再让主角恢复正常。当主角朝向为左/右时接触到它时,主角强制走到桥的那头。

点评

从前我用类似的方法做过,不过现在这个主角能自由走动的,看起来能自然一些。  发表于 2014-3-9 22:06
美丽晨露 发表于 2014-3-8 15:21:14
说真的还没有看懂怎么操作的说

点评

已经重新编辑主楼的帖子  发表于 2014-3-8 16:48
神秘影子 发表于 2014-3-8 12:20:21
我都是在桥下设置接触自动透明化穿过的事件解决的

点评

我没想出来如何用纯事件来实现相同的效果,请教下?  发表于 2014-3-8 12:55
+1  发表于 2014-3-8 12:55
紫英晓狼1130 发表于 2014-3-8 12:10:49
这个真不错,是个很好的东西

点评

嘿嘿,多谢夸奖  发表于 2014-3-8 12:54
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 08:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表