赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
事件中这样用:
visionTo(11) 判断角色能否看到 11 号事件
visionTo(4, 6) 判断六号事件是否能看到 4 号事件
class Interpreter
# --------------------------------
# eventID: 目标事件的 ID
# this : 从什么 ID 的事件判断视线,不传值则默认为角色本身
# ---------------------------------
def visionTo(eventID, this = -1)
dest = $game_map.events[eventID]
src = this == -1 ? $game_player : $game_map.events[this]
return true if dest.x == src.x and dest.y == src.y
if dest.x == src.x
range = dest.y < src.y ? (dest.y + 1)...src.y : (src.y + 1)...dest.y
for i in range
event = $game_map.events[$game_map.check_event(dest.x, i)]
return false if event != nil && !event.through
return false if !$game_map.passable?(dest.x, i, 0)
end
return dest.y > src.y && src.direction == 2 ||
dest.y < src.y && src.direction == 8
elsif dest.y == src.y
range = dest.x < src.x ? (dest.x + 1)...src.x : (src.x + 1)...dest.x
for i in range
event = $game_map.events[$game_map.check_event(i, dest.y)]
return false if event != nil and !event.through
return false if !$game_map.passable?(i, dest.y, 0)
end
return dest.x > src.x && src.direction == 6 ||
dest.x < src.x && src.direction == 4
else
return false
end
end
end
上面这个脚本判断的是图块是否四方向都不能通行,如果有一个方向可通行也算能看见,如果需要修改可以给$game_map.passable? 的最后一个参数传递不同的值判断不同的通行方向~
# d : 方向 (0,2,4,6,8,10)
# ※ 0,10 = 全方向不能通行的情况的判定 (跳跃等)
# self_event : 自己 (判定事件可以通行的情况下) 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|