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

Project1

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

[已经解决] 设置了图块不可通行为什么还能跑上去

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
帖子
79
跳转到指定楼层
1
发表于 2014-6-7 18:48:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 denitk 于 2014-6-7 20:37 编辑



如图所示,求解决办法

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-6-7 18:57:28 | 只看该作者
很抱歉,我完全没看出来哪里出了问题

点评

他人走到了墙里去了。也就是设置了不能通行还是穿过去了  发表于 2014-6-7 18:59
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-6-7 19:03:57 | 只看该作者
本帖最后由 VIPArcher 于 2014-6-7 19:05 编辑

解决方式1 事件堵
解决方式2 在B,C,D,E里的某个图块用透明的图块 设置为不可通行,用这个图块把不能走的地方堵上。(这里要绘制东西就用事件)
解决方式3, 用下面的这个脚本(不推荐)
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_Map
  3. #------------------------------------------------------------------------------
  4. #  管理地图的类。拥有卷动地图以及判断通行度的功能。
  5. #   本类的实例请参考 $game_map 。
  6. #    添加内容:添加读取地图备注内容并更改一部分通行判定。alias:2个,新定义:2个
  7. #==============================================================================
  8.  
  9. class Game_Map
  10.   #--------------------------------------------------------------------------
  11.   # ● セットアップ
  12.   #     map_id : マップ ID
  13.   #     enable : 所属レイヤーの変更
  14.   #--------------------------------------------------------------------------
  15.   alias region_effect_setup setup
  16.   def setup(map_id)
  17.     @encountwalk_region = {}
  18.     @passagechange_region = {}
  19.     @canjump_region = {}
  20.     @region_switch = {}
  21.     @forcemove_region = {}
  22.     @move_diag_region = {}
  23.     region_effect_setup(map_id)
  24.     @map.note.each_line{|line|
  25.     case line
  26.     when /\<(?:遇敌步数更改|ENCOUNTWALK_REGION)[ ]**(\d+)(?:\,(\d+))*\>/
  27.       @encountwalk_region[$1.to_i] = $2 == nil ? 0 : $2.to_i
  28.     when /\<(?:更改通行区域|PASSAGECHANGE_REGION)[ ]*(\d+)(?:\,(\d+))*\>/
  29.       push_passage_region($1.to_i,$2)
  30.     when /\<(?:可跳跃区域|JUMP_REGION)[ ]*(\d+)(?:\,([2468]+))*\>/
  31.       push_jump_region($1.to_i,$2)
  32.     when /\<(?:区域开关|REGION_SWITCH)[ ]*(\d+)(?:\,(\d+))*\>/
  33.       @region_switch[$1.to_i] = $2.to_i
  34.     when /\<(?:强制移动区域|FORCEMOVE_REGION)[ ]*(\d+)(?:\,([2468]+))*\>/
  35.       @forcemove_region[$1.to_i] = $2.to_i
  36.     when /\<(?:斜向移动|MOVE_DIAG)[ ]*(\d+)(?:\,([28]+))\>/
  37.       @move_diag_region[$1.to_i] = $2.to_i
  38.     end
  39.     }
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 添加通行区域
  43.   #--------------------------------------------------------------------------
  44.   def push_passage_region(region_id,direction)
  45.     directions = []
  46.     if direction
  47.       direction.scan(/./){|d|
  48.       case d
  49.       when /2/
  50.         directions.push(0x0001)
  51.       when /4/
  52.         directions.push(0x0002)
  53.       when /6/
  54.         directions.push(0x0004)
  55.       when /8/
  56.         directions.push(0x0008)
  57.       end
  58.       }
  59.     end
  60.     @passagechange_region[region_id] = directions
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 添加跳跃区域
  64.   #--------------------------------------------------------------------------
  65.   def push_jump_region(region_id,direction)
  66.     directions = []
  67.     if direction
  68.       direction.scan(/./){|d|
  69.       case d
  70.       when /2/
  71.         directions.push(2)
  72.       when /4/
  73.         directions.push(4)
  74.       when /6/
  75.         directions.push(6)
  76.       when /8/
  77.         directions.push(8)
  78.       end
  79.       }
  80.     else
  81.       directions = [2,4,6,8]
  82.     end
  83.     @canjump_region[region_id] = directions
  84.   end
  85.   alias region_change_check_passage check_passage
  86.   #--------------------------------------------------------------------------
  87.   # ● 通行检查
  88.   #     alias:添加区域通行判定
  89.   #--------------------------------------------------------------------------
  90.   def check_passage(x, y, bit)
  91.     change = @passagechange_region[region_id(x,y)]
  92.     return change.include?(bit) if change
  93.     return region_change_check_passage(x,y,bit)
  94.   end
  95.   attr_reader :encountwalk_region
  96.   attr_reader :canjump_region
  97.   attr_reader :region_switch
  98.   attr_reader :forcemove_region
  99.   attr_reader :move_diag_region
  100. end
  101. #==============================================================================
  102. # ■ Game_Player
  103. #------------------------------------------------------------------------------
  104. #  处理玩家人物的类。拥有事件启动的判定、地图的卷动等功能。
  105. #   本类的实例请参考 $game_player 。
  106. #    添加内容:添加有关移动的处理内容。 alias:3个 新定义:3个
  107. #==============================================================================
  108.  
  109. class Game_Player < Game_Character
  110.   alias _Kine_no_encount_region_encounter_progress_value encounter_progress_value
  111.   #--------------------------------------------------------------------------
  112.   # ● 获取遇敌进行值
  113.   #     alias:在结果添加区域遇敌值
  114.   #--------------------------------------------------------------------------
  115.   def encounter_progress_value
  116.     value = _Kine_no_encount_region_encounter_progress_value
  117.     v2 = $game_map.encountwalk_region[region_id]
  118.     value = v2 if v2
  119.     value
  120.   end
  121.   alias jump_move_by_input move_by_input
  122.   #--------------------------------------------------------------------------
  123.   # ● 由方向键移动
  124.   #     alias:添加强制移动区域与跳跃处理
  125.   #--------------------------------------------------------------------------
  126.   def move_by_input
  127.     @input_jump = false
  128.     return if force_move_by_region
  129.     jump_move_by_input
  130.     unless @move_succeed
  131.       jump_by_input(Input.dir4)
  132.     end
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 由方向键跳跃
  136.   #--------------------------------------------------------------------------
  137.   def jump_by_input(d)
  138.     return if d == 0
  139.     x1 = $game_map.x_with_direction(@x,d)
  140.     y1 = $game_map.y_with_direction(@y,d)
  141.     x2 = $game_map.x_with_direction(x1,d)
  142.     y2 = $game_map.y_with_direction(y1,d)
  143.     if can_jump?(x1,x2,y1,y2,d)
  144.       jump(x2 - @x,y2 - @y)
  145.       @input_jump = true
  146.       @move_succeed = true
  147.     end
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 可以跳跃?
  151.   #--------------------------------------------------------------------------
  152.   def can_jump?(x1,x2,y1,y2,d)
  153.     return false unless movable?
  154.     return false unless [2,4,6,8].any?{|di| map_passable?(x2,y2,di)}
  155.     return false if $game_map.canjump_region[$game_map.region_id(x1,y1)] == nil
  156.     return false unless $game_map.canjump_region[$game_map.region_id(x1,y1)].include?(d)
  157.     return true
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 由区域强制移动
  161.   #--------------------------------------------------------------------------
  162.   def force_move_by_region
  163.     return false if !movable? || $game_map.interpreter.running?
  164.     if $game_map.forcemove_region.include?(region_id)
  165.       move_straight($game_map.forcemove_region[region_id])
  166.       return true
  167.     end
  168.     return false
  169.   end
  170.   alias region_switch_update update
  171.   #--------------------------------------------------------------------------
  172.   # ● 更新画面
  173.   #     alias:添加区域开关控制内容
  174.   #--------------------------------------------------------------------------
  175.   def update
  176.     last_region_id = region_id
  177.     region_switch_update
  178.     if last_region_id != region_id
  179.       $game_map.region_switch.each{|k,v|
  180.         $game_switches[v] = region_id == k
  181.       }
  182.     end
  183.   end
  184. end
  185. #==============================================================================
  186. # ■ Game_CharacterBase
  187. #------------------------------------------------------------------------------
  188. #  管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
  189. #==============================================================================
  190.  
  191. class Game_CharacterBase
  192.   #--------------------------------------------------------------------------
  193.   # ● 径向移动
  194.   #     d       : 方向(2,4,6,8)
  195.   #     turn_ok : 是否可以改变方向
  196.   #--------------------------------------------------------------------------
  197.   alias move_diag_region_move_straight move_straight
  198.   def move_straight(d, turn_ok = true)
  199.     if $game_map.move_diag_region.keys.include?(region_id)
  200.       if [4,6].include?(d)
  201.         x2 = $game_map.round_x_with_direction(@x,d)
  202.         d2 = $game_map.move_diag_region[region_id]
  203.         [d2,10-d2].collect{|yd| $game_map.round_y_with_direction(@y,yd)}.each do |y2|
  204.           if $game_map.region_id(x2,y2) == region_id
  205.             vert = d
  206.             horz = y2 - @y > 0 ? 2 : 8
  207.             @through = true
  208.             return move_diagonal(vert,horz).tap{|x| @through = false}.tap{|x| set_direction(d)}
  209.           end
  210.         end
  211.       end
  212.     end
  213.     move_diag_region_move_straight(d,turn_ok)
  214.   end
  215. end

点评

<更改通行区域 2 2468>在后面跟上的数字代表那个方向可通行,(前面那样=变成可完全通行)  发表于 2014-6-7 19:13
脚本用法,在地图的备注里备注<更改通行区域 2>数字为区域ID 这样区域ID为2的地方不可通行  发表于 2014-6-7 19:11
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
帖子
79
4
 楼主| 发表于 2014-6-7 20:35:16 | 只看该作者




找到个和别的图不同的地方
但是不知道是不是这个问题

点评

不是 刚开始不从那里也可以走上去 现在只能站在原地不能动了  发表于 2014-6-7 22:35
moy
“地图”,挂墙上那个喂。你难道不是走那上去的吗  发表于 2014-6-7 22:29
说清楚嘛...... 搞得现在又被我弄出新问题了 现在人物出来就走不动了.........-_-!!!  发表于 2014-6-7 22:27
moy
楼下说的东西具体点说就是那张地图  发表于 2014-6-7 22:21
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
5
发表于 2014-6-7 20:49:24 | 只看该作者
你的“墙上地图”的通行度没设置X,墙上的一切东西,除非特定,一般都要设定为X的,否则就会走上去

点评

赞成  发表于 2016-6-13 15:54
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
帖子
79
6
 楼主| 发表于 2014-6-7 20:51:52 | 只看该作者


你是说这个里面的所有东西除非特定都要设置×?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
帖子
79
7
 楼主| 发表于 2014-6-7 20:53:29 | 只看该作者

墙体里面已经全部是×了
难道是ACE本身的问题?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
8
发表于 2014-6-7 21:36:53 | 只看该作者
我说的是B~E里面的……你是不是先去把通行度的教程看一遍比较好?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
151
在线时间
208 小时
注册时间
2012-7-10
帖子
170
9
发表于 2014-6-7 21:58:20 | 只看该作者
你从哪穿上去的?不会是从沙发那里上去的吧……那个通行性也要检查下,新加入的图块,如果那个可通行的话,好像角色会有穿透属性
事件只会越用越熟,在用脚本前想想能否能用事件简便处理
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
132 小时
注册时间
2013-1-16
帖子
100
10
发表于 2014-6-7 22:04:40 | 只看该作者
工程发个,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 08:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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