赞 | 7 |
VIP | 866 |
好人卡 | 185 |
积分 | 32 |
经验 | 130059 |
最后登录 | 2024-12-19 |
在线时间 | 3618 小时 |
Lv3.寻梦者 双子人
- 梦石
- 0
- 星屑
- 3195
- 在线时间
- 3618 小时
- 注册时间
- 2009-4-4
- 帖子
- 4154
|
- class Scene_Map
- #--------------------------------------------------------------------------
- # ● 可以通行判定
- # x : X 坐标
- # y : Y 坐标
- # d : 方向 (0,2,4,6,8,10)
- # ※ 0,10 = 全方向不能通行的情况的判定 (跳跃等)
- # self_event : 自己 (判定事件可以通行的情况下)
- #--------------------------------------------------------------------------
- def passable?(x, y, d, self_event = nil)
- if self_event.name == "子弹"
- return true
- end
- # 被给予的坐标地图外的情况下
- unless valid?(x, y)
- # 不能通行
- return false
- end
- # 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
- bit = (1 << (d / 2 - 1)) & 0x0f
- # 循环全部的事件
- for event in events.values
- # 自己以外的元件与坐标相同的情况
- if event.tile_id >= 0 and event != self_event and
- event.x == x and event.y == y and not event.through
- # 如果障碍物的接触被设置的情况下
- if @passages[event.tile_id] & bit != 0
- # 不能通行
- return false
- # 如果全方向的障碍物的接触被设置的情况下
- elsif @passages[event.tile_id] & 0x0f == 0x0f
- # 不能通行
- return false
- # 这以外的优先度为 0 的情况下
- elsif @priorities[event.tile_id] == 0
- # 可以通行
- return true
- end
- end
- end
- # 从层按从上到下的顺序调查循环
- for i in [2, 1, 0]
- # 取得元件 ID
- tile_id = data[x, y, i]
- # 取得元件 ID 失败
- if tile_id == nil
- # 不能通行
- return false
- # 如果障碍物的接触被设置的情况下
- elsif @passages[tile_id] & bit != 0
- # 不能通行
- return false
- # 如果全方向的障碍物的接触被设置的情况下
- elsif @passages[tile_id] & 0x0f == 0x0f
- # 不能通行
- return false
- # 这以外的优先度为 0 的情况下
- elsif @priorities[tile_id] == 0
- # 可以通行
- return true
- end
- end
- # 可以通行
- return true
- end
- end
复制代码 将“子弹”改成别的名字。 |
|