Project1

标题: ……用脚本判断某坐标是否可以通行…… [打印本页]

作者: fux2    时间: 2010-9-15 07:10
标题: ……用脚本判断某坐标是否可以通行……
想了一晚上也没想出来,只能来问问了……{:4_83:}
作者: 禾西    时间: 2010-9-15 10:19
Game_Character#passable?(x, y, direction)
作者: fux2    时间: 2010-9-15 11:21
回复 禾西 的帖子

我现在就是用的这个,但不知道出什么问题了
x,y,指的是不可通行的块的坐标还是指主角坐标?顺便问方向是不是和小键盘对应的
7  8  9
4  人6
1  2  3

   
作者: 后知后觉    时间: 2010-9-15 11:29
Game_Map 也有一个 通行的判定

x,y 是 目标坐标

方向就是小键盘的那样.数据库->图块 里的每个元件都有一个可通行方向的设定.
作者: fux2    时间: 2010-9-15 11:39
回复 后知后觉 的帖子

那请问我这里要是想事件撞到墙就回头该怎么写?
  1. class Interpreter

  2. def gmove
  3.   for ev in $game_map.events.values
  4.     case ev.name
  5.     when /绿乌龟/
  6.       if ev.name == "绿乌龟左"
  7.         unless $game_map.passable?(ev.x-1 ,ev.y,4)
  8.           ev.name = "绿乌龟右"
  9.         else
  10.           ev.move_left
  11.         end
  12.       else
  13.         unless $game_map.passable?(ev.x+1, ev.y ,6)
  14.           ev.name = "绿乌龟左"
  15.         else
  16.           ev.move_right
  17.         end
  18.       end

  19.     end
  20.    
  21.    
  22.     end
  23.   end
  24. end
复制代码

作者: 禾西    时间: 2010-9-15 11:56
我想是因為name在 events[ x ].event.name 中……你讀event[ x ].name讀不到
作者: fux2    时间: 2010-9-15 12:01
回复 禾西 的帖子


    这个我重新定义过了,我想知道怎么判断前方无法通过,朝反方向走。
作者: 禾西    时间: 2010-9-15 12:23
  1. class Interpreter

  2. def gmove
  3.   for ev in $game_map.events.values
  4.     case ev.name
  5.     when "绿乌龟"
  6.       if ev.name == "绿乌龟左"
  7.         if $game_map.passable?(ev.x-1 ,ev.y,4)
  8.           ev.move_left
  9.         else
  10.           ev.move_right
  11.           ev.name = "绿乌龟右"
  12.         end
  13.       else
  14.         if $game_map.passable?(ev.x+1 ,ev.y,6)
  15.           ev.move_right
  16.         else
  17.           ev.move_left
  18.           ev.name = "绿乌龟左"
  19.         end
  20.       end

  21.     end
  22.    
  23.    
  24.     end
  25.   end
  26. end
复制代码
估計……
作者: fux2    时间: 2010-9-15 12:29
回复 禾西 的帖子

还是出现乌龟左右转头漂移的现象
    就是不停的转变左右方向
作者: 禾西    时间: 2010-9-15 13:09
無法理解,求范例,求截圖
作者: fux2    时间: 2010-9-15 13:40
回复 禾西 的帖子


    就是该事件的朝向在下一帧总会发生改变,看起来就像摇头
作者: fux2    时间: 2010-9-15 21:36
回复 禾西 的帖子

9小时自顶
   
作者: fux2    时间: 2010-9-16 12:13
回复 禾西 的帖子


    用了你改的判定,乌龟事件总会在下一帧改变走向,名字也会随帧数发生改变,就是你写的判断总在同时被满足。。。
作者: 禾西    时间: 2010-9-16 13:18
高清楚了,是刷新太频繁做成的。重点是 ev.moving?

  1.      for ev in $game_map.events.values
  2.    case ev.name
  3.    when /绿乌龟/
  4.      if ev.name == "绿乌龟左"
  5.        if ev.passable?(ev.x ,ev.y,4)
  6.          ev.move_left
  7.        elsif not ev.moving?
  8.          ev.move_right
  9.          ev.name = "绿乌龟右"
  10.        end
  11.      else
  12.        if ev.passable?(ev.x ,ev.y,6)
  13.          ev.move_right
  14.        elsif not ev.moving?
  15.          ev.move_left
  16.          ev.name = "绿乌龟左"
  17.        end
  18.      end
  19.    end
  20.    end
复制代码





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