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

Project1

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

[已经过期] 有木有办法增大一个事件的判定范围?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1315
在线时间
98 小时
注册时间
2018-4-12
帖子
85
跳转到指定楼层
1
发表于 2018-6-3 19:11:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  一般的情况下我都是采用'与事件接触'的.

  可是,在制作一些体积非常大的比如狮鬃水母这种东西的时候,为了使看起来很大,就要调整行走图的大小.但这也牵涉出一个问题:虽然看起来很大,但触发只有4个(上下左右各一个)格子!

  于是就造成了这种很不美观的'穿墙'现象.

  我打算采用'并行处理'来解决这个问题.但这样做复杂且容易卡死.

  您们有更好的方案吗?
更多图片 小图 大图
组图打开中,请稍候......
编程 音乐 美工...先从编程下手吧XD.

Lv3.寻梦者

梦石
0
星屑
4583
在线时间
1205 小时
注册时间
2016-4-7
帖子
982

开拓者

2
发表于 2018-6-3 19:49:03 | 只看该作者
通常这种事情 的解决办法是把事件多复制几个
附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33163
在线时间
10488 小时
注册时间
2009-3-15
帖子
4756
3
发表于 2018-6-3 19:50:13 | 只看该作者
日站有脚本能解決不过副作用很大..所以就呵呵了..
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37779
在线时间
5394 小时
注册时间
2006-11-10
帖子
6546
4
发表于 2018-6-3 20:07:02 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-6-3 20:57 编辑

这么毕加索的图,有发和没发都差不多....... 反正都没办法从图上得到什么信息.... 不过好歹知道你是有用心的.....那咱就用心的说明

改接触判定的话, 到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 and [1,2].include?(event.trigger)
        # 跳跃中以外的情况下、启动判定是正面的事件
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end

蓝色的这段就是坐标判断,  它的意思是,

当 事件的X 等于 X and 事件的Y 等于 Y and 事件的目标符合(与主角接触,与事件接触) 的情况下

改动前面X和Y的算法就可以自定义它的范围了.

给你个栗子:

如果把 event.x == x  改为 (event.x - x).abs <= 3  #意思自己F1搜索

那就变成 事件在距离主角 横向 3 格内 接触 就会触发

另外,直接这样改的话,你所有事件都会变成大范围触发, 所以,前面还要加个判断, 当event.id == XX的时候, 才用修改版的坐标,  否则就用平时的坐标

如果你能自己搞定这段, 咱就教你一个[用备注自定义任何事件的接触范围] 方法

想做动作游戏,先过了坐标判定关, 砍八路,骚年.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1315
在线时间
98 小时
注册时间
2018-4-12
帖子
85
5
 楼主| 发表于 2018-6-3 20:57:31 | 只看该作者
本帖最后由 myaa475 于 2018-6-3 21:06 编辑
灯笼菜刀王 发表于 2018-6-3 20:07
这么毕加索的图,有发和没发都差不多....... 反正都没办法从图上得到什么信息.... 不过好歹知道你 ...


  修改成这样的就应该可以了吧?等等...我好像弄成十字架了?

  麻烦明天或现在教授我怎么自定义那啥了吧.

-------------------------------------------------------------------------
  # ● 接触事件启动判定
  #--------------------------------------------------------------------------
  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 - $game_player.x ).abs <= 3 and [1,2].include?(event.trigger)
       elsif (event.y - $game_player.y ).abs <= 3 and [1,2].include?(event.trigger)
       elsif (event.y - $game_player.y ).abs >= 3 and [1,2].include?(event.trigger)
       elsif (event.x - $game_player.x ).abs >= 3 and [1,2].include?(event.trigger)
         # 跳跃中以外的情况下、启动判定是正面的事件
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end






  此外if (事件的名字) = 中型鱼

  事件的名字改怎么写?如果把这个放在判定最前面!就应该自定义什么什么了.


补充于21:04(我好像写错了)
   # 事件坐标与目标一致的情况下
       if (event.x - $game_player.x ).abs <= 3 and [1,2].include?(event.trigger)
       elsif (event.y - $game_player.y ).abs <= 3 and [1,2].include?(event.trigger)
       elsif (event.y.abs + 3) >=  $game_player.x and [1,2].include?(event.trigger)
       elsif (event.y.abs - 3) >=  $game_player.x and [1,2].include?(event.trigger)
       elsif (event.x.abs + 3) >=  $game_player.y and [1,2].include?(event.trigger)
       elsif (event.x.abs - 3) >=  $game_player.y and [1,2].include?(event.trigger)
         # 跳跃中以外的情况下、启动判定是正面的事件
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end

捕获.JPG (190.2 KB, 下载次数: 5)

捕获.JPG

点评

不,不是你写错了, 是咱开始就说错地方了, 而且漏了N多东西  发表于 2018-6-3 23:21
编程 音乐 美工...先从编程下手吧XD.
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33163
在线时间
10488 小时
注册时间
2009-3-15
帖子
4756
6
发表于 2018-6-3 21:16:30 | 只看该作者
if (event.x - $game_player.x ).abs <= 3 and (event.y - $game_player.y ).abs <= 3
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37779
在线时间
5394 小时
注册时间
2006-11-10
帖子
6546
7
发表于 2018-6-4 00:00:15 | 只看该作者
不好意思, 之前手头忙,没经过测试, 搞错地方和方法了

改game player那里貌似会被game event重置, 反正改那里怎么都触发不了, 直接改事件的自动启动方法比较干脆

说好的 备注自定义范围脚本

传送门
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-23 14:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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