查看: 2508|回复: 17

[已经解决] 怎么判断主角接触的是地图元件还是事件?

  [复制链接]
梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
发表于 2009-11-8 17:13:07 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 失去的记忆 于 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!撞到 “人 或 其他事件”却不会,可是怎么判断呢?
红色部分应该怎么写?
做一个游戏也用这么长时间........
PS:说我自己呢
梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
 楼主| 发表于 2009-11-8 21:31:01 | 显示全部楼层
顶吖!!!!!!!
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-8 21:53:12 | 显示全部楼层
你的墙不会都是事件做的吧。。。。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-11-1
回帖
37
发表于 2009-11-8 21:53:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
 楼主| 发表于 2009-11-8 22:10:12 | 显示全部楼层
绝对不是!!看图:
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
 楼主| 发表于 2009-11-8 22:12:48 | 显示全部楼层
图片显示不了.... 反正我做的墙是画上去的!不是事件,但效果还是一样!
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-8 22:13:12 | 显示全部楼层
你那个脚本严重误导人啊。。。那个是事件的判断和撞墙一点关系都没有。。。。。

我给你重新做了

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就成了
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
 楼主| 发表于 2009-11-8 22:26:31 | 显示全部楼层
照着你说的改了....可是效果是当角色朝上走的时候 P 1 别的方向走不会!! 怎么办?
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-8 22:31:36 | 显示全部楼层
unless $game_map.passable?(x, y, 0)
换成。。。我忘记考虑了点东西。。。这个和VX不一样的地方是。。。VX只有通行和不通行。。Xp要考虑那个方向不通行
unless $game_map.passable?(x, y, Input.dir4)
回复

使用道具 举报

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
回帖
344
 楼主| 发表于 2009-11-8 22:35:54 | 显示全部楼层
脚本附上!!
      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,撞别的方向不播放!!
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部