设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2101|回复: 17
打印 上一主题 下一主题

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

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
跳转到指定楼层
1
发表于 2009-11-8 17:13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 失去的记忆 于 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:说我自己呢

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
2
 楼主| 发表于 2009-11-8 21:31:01 | 只看该作者
顶吖!!!!!!!
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
3
发表于 2009-11-8 21:53:12 | 只看该作者
你的墙不会都是事件做的吧。。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-11-1
帖子
40
4
发表于 2009-11-8 21:53:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
5
 楼主| 发表于 2009-11-8 22:10:12 | 只看该作者
绝对不是!!看图:
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
7
发表于 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就成了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
10
 楼主| 发表于 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:说我自己呢
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-1 09:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表