Project1

标题: 如何提取阻挡事件的编号 [打印本页]

作者: stella    时间: 2015-7-7 13:52
标题: 如何提取阻挡事件的编号
Game_Character3 脚本中的一段,在其中添加:当向左移动被事件阻挡,就提取阻挡事件的编号,代入一个变量。

  #--------------------------------------------------------------------------
  # ● 向左移动
  #     turn_enabled : 本场地位置更改许可标志
  #--------------------------------------------------------------------------
  def move_left(turn_enabled = true)
    # 面向左
    if turn_enabled
      turn_left
    end
    # 可以通行的情况下
    if passable?(@x, @y, 4)
      # 面向左
      turn_left
      # 更新坐标
      @x -= 1
      # 增加步数
      increase_steps
    # 不能通行的情况下
    else
      # 接触事件的启动判定
      check_event_trigger_touch(@x-1, @y)
    end
  end

作者: 芯☆淡茹水    时间: 2015-7-7 13:59
passable? 不只是判断有无事件阻拦,地图不能通行也由其判断。
作者: 亿万星辰    时间: 2015-7-7 15:27
如果你这个事件没啥具体内容的话,你不如给那个事件一个并行事件,让它往一个变量里写值就可了。
如果阻挡的事件本身是个含有具体内容的npc的话,那就通过脚本根据角色坐标及朝向判断那个坐标有哪个()事件。
作者: 汪汪    时间: 2015-7-8 20:08
Game_Map的def passable?(x, y, d, self_event = nil)
    for event in events.values
      # 自己以外的元件与坐标相同的情况
      if event.tile_id >= 0 and event != self_event and
         event.x == x and event.y == y and not event.through
        # 如果障碍物的接触被设置的情况下
        if @passages[event.tile_id] & bit != 0
          # 不能通行
          return false
        # 如果全方向的障碍物的接触被设置的情况下
        elsif @passages[event.tile_id] & 0x0f == 0x0f
          # 不能通行
          return false
        # 这以外的优先度为 0 的情况下
        elsif @priorities[event.tile_id] == 0
          # 可以通行
          return true
        end
      end
    end
这些里面,提取不能通行时的事件id就好
作者: stella    时间: 2015-7-9 16:07
认可四楼吧




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