Project1

标题: 怎么判断主角接触的是地图元件还是事件? [打印本页]

作者: 失去的记忆    时间: 2009-11-8 17:13
标题: 怎么判断主角接触的是地图元件还是事件?
本帖最后由 失去的记忆 于 2009-11-8 17:14 编辑

在脚本中怎么判断主角接触的是地图元件还是事件?
如下脚本:
在class Game_Player中的
  #--------------------------------------------------------------------------
  # ● 接触事件启动判定
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    # 事件执行中的情况下
    if $game_system.map_interpreter.running?
      return result
    end
    # 全事件的循环
    for event in $game_map.events.values
      # 事件坐标与目标一致的情况下
      if event.x == x and event.y == y
        # 跳跃中以外的情况下、启动判定是正面的事件
        if not event.jumping? and not event.over_trigger? and [1,2].include?(event.trigger)
          event.start
          result = true
        end
      else
    Audio.se_play("Audio/SE/撞墙音乐",100,100)  if xxxxx
      end   
    end
    return result
  end
我做的效果是:主角撞到墙会发出SE!撞到 “人 或 其他事件”却不会,可是怎么判断呢?
红色部分应该怎么写?
作者: 失去的记忆    时间: 2009-11-8 21:31
顶吖!!!!!!!
作者: secondsen    时间: 2009-11-8 21:53
你的墙不会都是事件做的吧。。。。
作者: 中国    时间: 2009-11-8 21:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 失去的记忆    时间: 2009-11-8 22:10
绝对不是!!看图:
作者: 失去的记忆    时间: 2009-11-8 22:12
图片显示不了.... 反正我做的墙是画上去的!不是事件,但效果还是一样!
作者: secondsen    时间: 2009-11-8 22:13
你那个脚本严重误导人啊。。。那个是事件的判断和撞墙一点关系都没有。。。。。

我给你重新做了

Ctrl+Alt+F  全局搜索 dir4

找到


      case Input.dir4
      when 2        move_down
      when 4        move_left
      when 6        move_right
      when 8        move_up
      end

加他改成这样


      case Input.dir4
      when 2
        x = @x
        y = @y + 1
        move_down
      when 4
        x = @x - 1
        y = @y
        move_left
      when 6
        x = @x + 1
        y = @y
        move_right
      when 8
        x = @x
        y = @y - 1
        move_up
      if Input.dir4 > 0
        unless $game_map.passable?(x, y, 0)
          # 启动判定是正面
          p 1
        end
      end

一幢墙就会 p 1  你把它改成 播放SE就成了
作者: 失去的记忆    时间: 2009-11-8 22:26
照着你说的改了....可是效果是当角色朝上走的时候 P 1 别的方向走不会!! 怎么办?
作者: secondsen    时间: 2009-11-8 22:31
unless $game_map.passable?(x, y, 0)
换成。。。我忘记考虑了点东西。。。这个和VX不一样的地方是。。。VX只有通行和不通行。。Xp要考虑那个方向不通行
unless $game_map.passable?(x, y, Input.dir4)
作者: 失去的记忆    时间: 2009-11-8 22:35
脚本附上!!
      case Input.dir4
      when 2
        x = @x
        y = @y + 1
        move_down
      when 4
        x = @x - 1
        y = @y
        move_left
      when 6
        x = @x + 1
        y = @y
        move_right
      when 8
        x = @x
        y = @y - 1
        move_up
      if Input.dir4 > 0
       unless $game_map.passable?(x, y, Input.dir4)
          # 启动判定是正面
          Audio.se_play("Audio/SE/撞墙音乐",100,100)
        end
      end
    end
没错吧!可是还是一样....往上走撞墙播放SE,撞别的方向不播放!!
作者: secondsen    时间: 2009-11-8 23:01
$game_map.passable?(x, y, 10 - Input.dir4)

我就不信了。。我各个方向都走了还能出错。。。
作者: well    时间: 2009-11-9 06:59
move_up下面少个end
作者: 失去的记忆    时间: 2009-11-9 07:13
回复LS各位,终于达到一点效果了....可是 如果人物面朝墙方向站立 就算不按前进键也会响个不停!!!我狂晕!!
能不能让它按住前进键后才会响? 就是“按一下响一下 一直按一直响 不按就不响”的效果!!:dizzy:
作者: secondsen    时间: 2009-11-9 07:51
我竟然把注释连同end一起删了。。。
  1.       case Input.dir4
  2.       when 2
  3.         x = @x
  4.         y = @y + 1
  5.         move_down
  6.       when 4
  7.         x = @x - 1
  8.         y = @y
  9.         move_left
  10.       when 6
  11.         x = @x + 1
  12.         y = @y
  13.         move_right
  14.       when 8
  15.         x = @x
  16.         y = @y - 1
  17.         move_up
  18.       end
  19.       if Input.dir4 > 0
  20.         unless $game_map.passable?(x, y, 10 - Input.dir4)
  21.           # 启动判定是正面
  22.           p 1
  23.         end
  24.       end
  25.     end
复制代码
我有Input.dir4>0的判断的啊.。我测试就没有问题
作者: 失去的记忆    时间: 2009-11-9 08:08
恩恩恩 我测试了 也没啥问题了.... 好像SE播放的太快了..能不能加个缓冲时间?? 我加@wait_count = 20好像没用....
作者: secondsen    时间: 2009-11-9 09:00
你可以这样
我没电脑只能这样说了
在Game_Player的初始化那个方法中加一个@sign=0
将改的脚本替播放SE的那句改成
@sign=缓冲贞数 if @sign <= 0
在def update下边加上
@sign-=1
if @sign == 0
  播放SE
end
作者: 失去的记忆    时间: 2009-11-9 12:02
实验完毕! 感觉还是不行.... 当按键松开后会不自然的响一下..希望再看看:shutup:
作者: 失去的记忆    时间: 2009-11-9 13:30
本帖最后由 失去的记忆 于 2009-11-9 13:31 编辑

OK 自己吧位置调节了一下可以了 去认可你了啊!

P:朋友真有耐心啊 希望下次再见!!!




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