20180504000409.png (111.4 KB, 下载次数: 33)
123.png (136 KB, 下载次数: 36)
=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
0newing 发表于 2018-5-4 16:17
加这么一段脚本试试吧……不过飞艇不能通过的地方需要画上区域……总比创建事件块阻挡方便多了
重写了一下 ...
流浪杰哥 发表于 2018-6-19 16:43
发现一个小小的问题,海面上可以降下飞空艇 (海面上应该是不可以降下飞空艇得) ...
0newing 发表于 2018-6-20 23:22
已经改好啦~~另建了判定飞艇通行的方法
以前的那个确实可以在任意地点降落,现在已经修复啦~~ ...
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |