| 赞 | 6 |
| VIP | |
| 好人卡 | |
| 积分 | 13 |
| 经验 | |
| 最后登录 | 2024-5-21 |
| 在线时间 | 423 小时 |
- 梦石
- 0
- 星屑
- 1261
- 在线时间
- 423 小时
- 注册时间
- 2011-6-30
- 回帖
- 470
|
发表于 2018-5-4 16:17:35
|
显示全部楼层
本帖最后由 0newing 于 2018-6-22 08:15 编辑
加这么一段脚本试试吧……不过飞艇不能通过的地方需要画上区域……总比创建事件块阻挡方便多了
重写了一下几个类的方法,算是达到要求了吧……
不过用了之后飞艇还会被事件块阻挡倒是真的…………
[pre lang="ruby"]
=begin
飞艇无法穿过4号区域,但仍然会被事件块阻挡
当然,几号区域可以自定义~~
=end
#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
# 处理玩家人物的类。拥有事件启动的判定、地图的卷动等功能。
# 本类的实例请参考 $game_player 。
# 首先关闭乘坐飞艇时开启的穿透
#==============================================================================
class Game_Player < Game_Character
def update_vehicle_get_on
if !@followers.gathering? && !moving?
@direction = vehicle.direction
@move_speed = vehicle.speed
@vehicle_getting_on = false
@transparent = true
vehicle.get_on
end
end
#--------------------------------------------------------------------------
# ● 判定地图能否通行
# d : 方向(2,4,6,8)
#--------------------------------------------------------------------------
def map_passable?(x, y, d)
case @vehicle_type
when :boat
$game_map.boat_passable?(x, y)
when :ship
$game_map.ship_passable?(x, y)
when :airship
$game_map.airship_passable?(x, y)
else
super
end
end
end
#==========================================================================
class Game_Map
#--------------------------------------------------------------------------
# ● 通行检查
# bit : 判断通行禁止与否的字节(请参照二进制运算)
# 其实我不是很懂这个通行检查,就按照自己的想法去写了
#--------------------------------------------------------------------------
def check_air_passage(x, y, bit)
if $game_player.in_airship?
return false if region_id(x, y) == 4 #这个数字代表几号区域,可以自行修改
return true
end
all_tiles(x, y).each do |tile_id|
flag = tileset.flags[tile_id]
next if flag & 0x10 != 0
if flag & bit == 0
return true
end
if flag & bit == bit
return false
end
end
return false
end
#--------------------------------------------------------------------------
# ● 判定飞艇是否可以通行
#--------------------------------------------------------------------------
def airship_passable?(x, y)
check_air_passage(x, y, 0)
end
#--------------------------------------------------------------------------
# ● 判定飞艇是否可以着陆
#--------------------------------------------------------------------------
def airship_land_ok?(x, y)
check_passage(x, y, 0x0800) && check_passage(x, y, 0x0f)
end
end
[/pre] |
评分
-
查看全部评分
|