查看: 4016|回复: 3

[已经过期] 斜角触发事件

[复制链接]
梦石
0
星屑
35248
在线时间
4171 小时
注册时间
2007-12-15
回帖
9489
发表于 2019-11-15 08:04:50 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 89444640 于 2019-11-15 08:07 编辑

xp默认是四个朝向移动,但是走起来蛋疼,用了伪八方或真或真八方移动后,手感变好了但是有个一直没解决的问题,一旦斜角移动就不能在斜向接触的时候触发不能穿透的事件了,意思就是如果是挡路事件,无朝向需求,可以穿透,角色踩在上面就算的,在加上范围判定后,在斜角移动时可以触发,用地图跳转控制角色位置。或者只有一个元件可通行的狭窄通道,也可以。
那么在宽阔地图上,不能做成穿透的明雷,如何进行斜角范围触发呢?
伪八方的面相判断时,按先按下的方向去判断角色朝向,地图上显示的就是角色面相这个方向去走斜角,那么,能不能通过某种方法,判断这个朝向,然后进行与主角接触和与事件接触,的事件触发呢?
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2019-11-15 10:30:17 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2019-11-15 10:33 编辑

可以啊, 单纯的加判定很简单 找到 Game_Character 3 这个脚本(你也一样是这里)

  #--------------------------------------------------------------------------
  # ● 向左下移动
  #--------------------------------------------------------------------------
  def move_lower_left
    # 没有固定面向的场合
    unless @direction_fix
      # 朝向是右的情况下适合的面是左面、朝向是上的情况下适合的面是下面
      @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
    end
    # 下→左、左→下 的通道可以通行的情况下
    if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
       (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
      # 更新坐标
      @x -= 1
      @y += 1
      # 增加步数
      increase_steps
    end
    if @direction == 4 and !passable?(@x-1, @y, 6)
        check_event_trigger_touch(@x-1, @y)
    end
    if @direction == 2 and !passable?(@x, @y+1, 8)
        check_event_trigger_touch(@x, @y+1)
    end

  end

加上这两句就可以了 @direction == 2 意思是 朝向为2的时候,也就是朝下, !passable?(@x, @y+1, 8) 表示 自身 坐标的X,Y+1,朝上 的位置不可通行的情况下(也就是自己下面一格不能从上面进去的时候)  
check_event_trigger_touch(@x, @y+1) 这句是接触启动括号内坐标的事件,

这一段的意思就是 当朝向为2 and 自己下方一格不能从方向8进去的时候(也就是不能通行), 调用接触启动事件

下面的 右下 左上 右上 也加上同样的两句(要改一下朝向和坐标)

然后去体验下效果, 我只能提醒你, 结果可能和你想象的不一样

点评

我先猜一下再实验……难道是会有严重的视觉误差?体型越大越明显?  发表于 2019-11-15 11:37

评分

参与人数 1星屑 +30 收起 理由
RyanBern + 30 塞糖

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部