设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

请问,能否让飞艇不能穿过世界地图的山峰,如图

查看数: 3260 | 评论数: 6 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-5-4 00:04

正文摘要:

请问,能否让飞艇不能穿过世界地图的山峰,,如图:

回复

流浪杰哥 发表于 2018-6-24 20:53:08
0newing 发表于 2018-6-20 23:22
已经改好啦~~另建了判定飞艇通行的方法
以前的那个确实可以在任意地点降落,现在已经修复啦~~ ...

感谢大佬解决了问题
0newing 发表于 2018-6-20 23:22:46
流浪杰哥 发表于 2018-6-19 16:43
发现一个小小的问题,海面上可以降下飞空艇    (海面上应该是不可以降下飞空艇得)   ...

已经改好啦~~另建了判定飞艇通行的方法
以前的那个确实可以在任意地点降落,现在已经修复啦~~
流浪杰哥 发表于 2018-6-19 16:43:16
0newing 发表于 2018-5-4 16:17
加这么一段脚本试试吧……不过飞艇不能通过的地方需要画上区域……总比创建事件块阻挡方便多了
重写了一下 ...

发现一个小小的问题,海面上可以降下飞空艇    (海面上应该是不可以降下飞空艇得)  

点评

emmmmm……明晚找个时间改改……谢谢提醒哈~~  发表于 2018-6-20 01:57

评分

参与人数 1+1 收起 理由
0newing + 1 塞糖

查看全部评分

0newing 发表于 2018-5-4 16:17:35
本帖最后由 0newing 于 2018-6-22 08:15 编辑

加这么一段脚本试试吧……不过飞艇不能通过的地方需要画上区域……总比创建事件块阻挡方便多了
重写了一下几个类的方法,算是达到要求了吧……
不过用了之后飞艇还会被事件块阻挡倒是真的…………
RUBY 代码复制
  1. =begin
  2. 飞艇无法穿过4号区域,但仍然会被事件块阻挡
  3. 当然,几号区域可以自定义~~
  4. =end
  5. #==============================================================================
  6. # ■ Game_Player
  7. #------------------------------------------------------------------------------
  8. #  处理玩家人物的类。拥有事件启动的判定、地图的卷动等功能。
  9. #   本类的实例请参考 $game_player 。
  10. #   首先关闭乘坐飞艇时开启的穿透
  11. #==============================================================================
  12.  
  13. class Game_Player < Game_Character
  14.   def update_vehicle_get_on
  15.     if !@followers.gathering? && !moving?
  16.       @direction = vehicle.direction
  17.       @move_speed = vehicle.speed
  18.       @vehicle_getting_on = false
  19.       @transparent = true
  20.       vehicle.get_on
  21.     end
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 判定地图能否通行
  25.   #     d : 方向(2,4,6,8)
  26.   #--------------------------------------------------------------------------
  27.   def map_passable?(x, y, d)
  28.     case @vehicle_type
  29.     when :boat
  30.       $game_map.boat_passable?(x, y)
  31.     when :ship
  32.       $game_map.ship_passable?(x, y)
  33.     when :airship
  34.       $game_map.airship_passable?(x, y)
  35.     else
  36.       super
  37.     end
  38.   end
  39. end
  40. #==========================================================================
  41.   class Game_Map
  42. #--------------------------------------------------------------------------
  43. # ● 通行检查
  44. #     bit : 判断通行禁止与否的字节(请参照二进制运算)
  45. #     其实我不是很懂这个通行检查,就按照自己的想法去写了
  46. #--------------------------------------------------------------------------
  47.   def check_air_passage(x, y, bit)
  48.     if $game_player.in_airship?
  49.       return false if region_id(x, y) == 4    #这个数字代表几号区域,可以自行修改
  50.       return true
  51.     end
  52.     all_tiles(x, y).each do |tile_id|
  53.       flag = tileset.flags[tile_id]
  54.       next if flag & 0x10 != 0
  55.                         if flag & bit == 0
  56.                                 return true
  57.                         end
  58.                         if flag & bit == bit
  59.                                 return false
  60.                         end
  61.                 end
  62.                 return false
  63.         end
  64.   #--------------------------------------------------------------------------
  65.   # ● 判定飞艇是否可以通行
  66.   #--------------------------------------------------------------------------
  67.   def airship_passable?(x, y)
  68.     check_air_passage(x, y, 0)
  69.   end
  70.  
  71.   #--------------------------------------------------------------------------
  72.   # ● 判定飞艇是否可以着陆
  73.   #--------------------------------------------------------------------------
  74.   def airship_land_ok?(x, y)
  75.     check_passage(x, y, 0x0800) && check_passage(x, y, 0x0f)
  76.   end
  77. end

点评

谢谢大大,已经完美解决,大大写脚本辛苦了。  发表于 2018-5-4 16:51

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 认可答案

查看全部评分

550214926 发表于 2018-5-4 11:01:16
本帖最后由 550214926 于 2018-5-4 11:08 编辑

图块设置在数据库
1 打开数据库
2 点击图块
3 找到对应的地图元件
4 O这个符号代表可通行,X这个符号代表不可通行,这两个符号都是可点击的。
550214926 发表于 2018-5-4 08:00:38
本帖最后由 550214926 于 2018-5-4 11:03 编辑

用不可穿透的事件围一圈
如果是部分山峰的话用事件围起来是最简单的方法,若是全部的话就更简单了,只要用山峰图块的通行设置定为不可通过就行。

点评

那得围多少事件啊,地图是400多乘400多的  发表于 2018-5-4 08:07
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-19 09:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表