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

Project1

 找回密码
 注册会员
搜索
查看: 3026|回复: 9
打印 上一主题 下一主题

[已经解决] 请问,能否让飞艇不能穿过世界地图的山峰,如图

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4473
在线时间
796 小时
注册时间
2017-7-14
帖子
170

开拓者

跳转到指定楼层
1
发表于 2018-5-4 00:04:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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

20180504000409.png (111.4 KB, 下载次数: 26)

20180504000409.png

123.png (136 KB, 下载次数: 30)

123.png

Lv3.寻梦者

梦石
0
星屑
1967
在线时间
185 小时
注册时间
2018-3-27
帖子
5
2
发表于 2018-5-4 08:00:38 | 只看该作者
本帖最后由 550214926 于 2018-5-4 11:03 编辑

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

点评

那得围多少事件啊,地图是400多乘400多的  发表于 2018-5-4 08:07
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1967
在线时间
185 小时
注册时间
2018-3-27
帖子
5
3
发表于 2018-5-4 11:01:16 | 只看该作者
本帖最后由 550214926 于 2018-5-4 11:08 编辑

图块设置在数据库
1 打开数据库
2 点击图块
3 找到对应的地图元件
4 O这个符号代表可通行,X这个符号代表不可通行,这两个符号都是可点击的。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1246
在线时间
422 小时
注册时间
2011-6-30
帖子
497
4
发表于 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 认可答案

查看全部评分

点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:[email protected]
个人主页:curatorjin.github.io
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7732
在线时间
1346 小时
注册时间
2012-6-6
帖子
345
5
发表于 2018-6-19 16:43:16 | 只看该作者
0newing 发表于 2018-5-4 16:17
加这么一段脚本试试吧……不过飞艇不能通过的地方需要画上区域……总比创建事件块阻挡方便多了
重写了一下 ...

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

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1246
在线时间
422 小时
注册时间
2011-6-30
帖子
497
6
发表于 2018-6-20 23:22:46 | 只看该作者
流浪杰哥 发表于 2018-6-19 16:43
发现一个小小的问题,海面上可以降下飞空艇    (海面上应该是不可以降下飞空艇得)   ...

已经改好啦~~另建了判定飞艇通行的方法
以前的那个确实可以在任意地点降落,现在已经修复啦~~
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:[email protected]
个人主页:curatorjin.github.io
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7732
在线时间
1346 小时
注册时间
2012-6-6
帖子
345
7
发表于 2018-6-24 20:53:08 | 只看该作者
0newing 发表于 2018-6-20 23:22
已经改好啦~~另建了判定飞艇通行的方法
以前的那个确实可以在任意地点降落,现在已经修复啦~~ ...

感谢大佬解决了问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-3 14:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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