Project1

标题: 设置了图块不可通行为什么还能跑上去 [打印本页]

作者: denitk    时间: 2014-6-7 18:48
标题: 设置了图块不可通行为什么还能跑上去
本帖最后由 denitk 于 2014-6-7 20:37 编辑



如图所示,求解决办法
作者: taroxd    时间: 2014-6-7 18:57
很抱歉,我完全没看出来哪里出了问题
作者: VIPArcher    时间: 2014-6-7 19:03
本帖最后由 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

作者: denitk    时间: 2014-6-7 20:35




找到个和别的图不同的地方
但是不知道是不是这个问题
作者: 布里蓝    时间: 2014-6-7 20:49
你的“墙上地图”的通行度没设置X,墙上的一切东西,除非特定,一般都要设定为X的,否则就会走上去
作者: denitk    时间: 2014-6-7 20:51


你是说这个里面的所有东西除非特定都要设置×?
作者: denitk    时间: 2014-6-7 20:53

墙体里面已经全部是×了
难道是ACE本身的问题?

作者: 布里蓝    时间: 2014-6-7 21:36
我说的是B~E里面的……你是不是先去把通行度的教程看一遍比较好?
作者: 最后制帽匠    时间: 2014-6-7 21:58
你从哪穿上去的?不会是从沙发那里上去的吧……那个通行性也要检查下,新加入的图块,如果那个可通行的话,好像角色会有穿透属性
作者: 2673627593    时间: 2014-6-7 22:04
工程发个,
作者: denitk    时间: 2014-6-7 22:40
QQ:915217892
求远程手把手帮修改
作者: denitk    时间: 2014-6-7 22:51
标题: 好吧,可以走到非可通行区域的问题没了,现在人物根本...
如题了


问题从一开始的可以走上非可通行图块发展到了完全不能走了

求解决啦
作者: denitk    时间: 2014-6-7 23:02
解决了
我把B区第一个格子设置了
O或者×
导致全图可走和全图不可走
谢谢大家哈
作者: denitk    时间: 2014-6-7 23:03
问题已经得到解决
B区第一个格子被设置为了
×
作者: VIPArcher    时间: 2014-6-7 23:21
B区第一个格子要是 且透明不能随便改
作者: VIPArcher    时间: 2014-6-7 23:23
B区 第一个格子要透明且通行度要是★
作者: 神秘影子    时间: 2014-6-8 15:32
如果B~E有“○” 就会可以通行
请检查【B图块】左上角第一个是否为★ 若不是请改为★




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1