Project1

标题: 关于冰上滑行的问题 [打印本页]

作者: 听海    时间: 2010-6-25 18:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 听海    时间: 2010-6-25 23:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心孤云    时间: 2010-6-26 00:03
我估计是地形标识有关。但是具体怎么解决我还真没办法。。。
作者: burst_TNT    时间: 2010-6-26 01:12
本帖最后由 burst_TNT 于 2010-6-26 01:24 编辑

请把你的脚本“冰面滑行”按照如下红字部分修改(或者你嫌麻烦直接复制下面的脚本替换你的“冰面滑行”也行……建议你自己修改一次,会比较清楚改的是什么地方,如果有新BUG也好进一步修改)
class Game_Character
  def move_down(turn_enabled = true)
    # 面向下
    if turn_enabled
      turn_down
    end   
    # 有事件的情况
    if check_event(@x, @y)   
      p "ture"
    # 可以通行的场合
    elsif passable?(@x, @y, 2)  
      # 面向下
      turn_down
      # 更新坐标
      @y += 1
      # 增加步数
      increase_steps
      if $game_map.terrain_tag(@x,@y) == 2      
        move_down(turn_enabled)
      #注释掉这行elsif passable?(@x, @y +1, 2)
        #注释掉这行@y +=1
      end
    # 不能通行的情况下
#    else
      # 接触事件的启动判定
#      check_event_trigger_touch(@x, @y + 1)
    end
  end
  def move_left(turn_enabled = true)
    # 面向左
    if turn_enabled
      turn_left
    end
    # 有事件的情况
    if check_event(@x, @y)
    # 可以通行的情况下
    elsif passable?(@x, @y, 4)
      # 面向左
      turn_left
      # 更新坐标
      @x -= 1
      # 增加步数
      increase_steps
      if $game_map.terrain_tag(@x,@y) == 2
        move_left(turn_enabled)
      #注释掉这行elsif passable?(@x -1, @y, 4)
        #注释掉这行@x -= 1
      end
    # 不能通行的情况下
#    else
      # 接触事件的启动判定
#      check_event_trigger_touch(@x -1, @y)
    end
  end
  def move_right(turn_enabled = true)
    # 面向右
    if turn_enabled
      turn_right
    end
    # 有事件的情况
    if check_event(@x, @y)
    # 可以通行的场合
    elsif passable?(@x, @y, 6)
      # 面向右
      turn_right
      # 更新坐标
      @x += 1
      # 增加步数
      increase_steps
      if $game_map.terrain_tag(@x,@y) == 2
        move_right(turn_enabled)
      #注释掉这行elsif passable?(@x + 1, @y, 4)
        #注释掉这行@x += 1
      end
    # 不能通行的情况下
#    else
      # 接触事件的启动判定
#      check_event_trigger_touch(@x + 1, @y)
    end
  end
  def move_up(turn_enabled = true)
    # 面向上
    if turn_enabled
      turn_up
    end
    # 有事件的情况
    if check_event(@x, @y)
    # 可以通行的情况下
    elsif passable?(@x, @y, 8)
      # 面向上
      turn_up
      # 更新坐标
      @y -= 1
      # 歩数増加
      increase_steps
      if $game_map.terrain_tag(@x,@y) == 2
        move_up(turn_enabled)
      #注释掉这行elsif passable?(@x, @y - 1, 8)
        #注释掉这行@y -= 1
      end
    # 不能通行的情况下
#    else
      # 接触事件的启动判定
#      check_event_trigger_touch(@x, @y -1)
    end
  end
end
作者: 姬文翔    时间: 2010-6-26 01:18
我估计是地形标识有关。但是具体怎么解决我还真没办法。。。
xcyog 发表于 2010-6-26 00:03

我把他工程里的地形标识都改为0就可以了


作者: IamI    时间: 2010-6-26 07:33
-_-b 是我很久以前写的那个么……那个算法挺老的了。还有些别的乱七八糟的问题……不打算自己重写的话按lss删掉passable即可
作者: 无心孤云    时间: 2010-6-26 19:55
啊。我对四楼的签名上的背景上的大地图很有兴趣。不知道能否共享下。。。




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