Project1

标题: 请问如何让事件穿过地图顶端? [打印本页]

作者: 美丽晨露    时间: 2013-3-31 20:32
标题: 请问如何让事件穿过地图顶端?
本帖最后由 美丽晨露 于 2013-4-1 19:56 编辑

设定移动事件时,事件走到地图顶端时就不会再走了。
而我就是用事件作弹幕,结果事件就卡在地图的边边了。


请问如何让事件穿过地图边缘?
作者: hys111111    时间: 2013-3-31 21:01
  1. class Scene_Map
  2.   #--------------------------------------------------------------------------
  3.   # ● 可以通行判定
  4.   #     x          : X 坐标
  5.   #     y          : Y 坐标
  6.   #     d          : 方向 (0,2,4,6,8,10)
  7.   #                  ※ 0,10 = 全方向不能通行的情况的判定 (跳跃等)
  8.   #     self_event : 自己 (判定事件可以通行的情况下)
  9.   #--------------------------------------------------------------------------
  10.   def passable?(x, y, d, self_event = nil)
  11.     if self_event.name == "子弹"
  12.       return true
  13.     end
  14.     # 被给予的坐标地图外的情况下
  15.     unless valid?(x, y)
  16.       # 不能通行
  17.       return false
  18.     end
  19.     # 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
  20.     bit = (1 << (d / 2 - 1)) & 0x0f
  21.     # 循环全部的事件
  22.     for event in events.values
  23.       # 自己以外的元件与坐标相同的情况
  24.       if event.tile_id >= 0 and event != self_event and
  25.          event.x == x and event.y == y and not event.through
  26.         # 如果障碍物的接触被设置的情况下
  27.         if @passages[event.tile_id] & bit != 0
  28.           # 不能通行
  29.           return false
  30.         # 如果全方向的障碍物的接触被设置的情况下
  31.         elsif @passages[event.tile_id] & 0x0f == 0x0f
  32.           # 不能通行
  33.           return false
  34.         # 这以外的优先度为 0 的情况下
  35.         elsif @priorities[event.tile_id] == 0
  36.           # 可以通行
  37.           return true
  38.         end
  39.       end
  40.     end
  41.     # 从层按从上到下的顺序调查循环
  42.     for i in [2, 1, 0]
  43.       # 取得元件 ID
  44.       tile_id = data[x, y, i]
  45.       # 取得元件 ID 失败
  46.       if tile_id == nil
  47.         # 不能通行
  48.         return false
  49.       # 如果障碍物的接触被设置的情况下
  50.       elsif @passages[tile_id] & bit != 0
  51.         # 不能通行
  52.         return false
  53.       # 如果全方向的障碍物的接触被设置的情况下
  54.       elsif @passages[tile_id] & 0x0f == 0x0f
  55.         # 不能通行
  56.         return false
  57.       # 这以外的优先度为 0 的情况下
  58.       elsif @priorities[tile_id] == 0
  59.         # 可以通行
  60.         return true
  61.       end
  62.     end
  63.     # 可以通行
  64.     return true
  65.   end
  66. end
复制代码
将“子弹”改成别的名字。
作者: 亿万星辰    时间: 2013-3-31 21:07
本帖最后由 亿万星辰 于 2013-4-1 12:49 编辑

把地图上下各放大一格就可以设法解决了么……

脚本里找 ★

Project1.rar

182.81 KB, 下载次数: 16


作者: 美丽晨露    时间: 2013-4-1 17:54
亿万星辰 发表于 2013-3-31 21:07
把地图上下各放大一格就可以设法解决了么……

脚本里找 ★

谢谢前辈
但是还是远景的问题?
这样做的话
640*480的远景图会被切割的
作者: 亿万星辰    时间: 2013-4-1 18:16
美丽晨露 发表于 2013-4-1 17:54
谢谢前辈
但是还是远景的问题?
这样做的话

那就做成图块算了~反正通行什么的都没必要设置
作者: 美丽晨露    时间: 2013-4-1 18:40
亿万星辰 发表于 2013-4-1 18:16
那就做成图块算了~反正通行什么的都没必要设置

是将远景做成图块?
作者: 亿万星辰    时间: 2013-4-1 19:35
其实直接把远景裁剪成图块也是可以的,不必考虑图块的绘制,直接一条一条的裁剪开即可。
作者: 美丽晨露    时间: 2013-4-1 19:56
亿万星辰 发表于 2013-4-1 19:35
其实直接把远景裁剪成图块也是可以的,不必考虑图块的绘制,直接一条一条的裁剪开即可。 ...

虽然很麻烦
但是的确可以做到的
谢谢




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