Project1

标题: 斜角触发事件 [打印本页]

作者: 89444640    时间: 2019-11-15 08:04
标题: 斜角触发事件
本帖最后由 89444640 于 2019-11-15 08:07 编辑

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

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

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




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