Project1

标题: 线形视野系统 ,怎么让触发开关打开同时显示一动画? [打印本页]

作者: HзO    时间: 2014-8-19 09:26
标题: 线形视野系统 ,怎么让触发开关打开同时显示一动画?
如果打开触发开关之后事件开始接近角色,我希望事件显示完一个动画后才开始接近角色


线形视野系统
http://www.66rpg.com/articles/4854
作者: 白鬼    时间: 2014-8-19 11:33
制作一个自动执行的事件,事件触发条件为 线性视野的开关为 on时

作者: HзO    时间: 2014-8-19 11:44
白鬼 发表于 2014-8-19 11:33
制作一个自动执行的事件,事件触发条件为 线性视野的开关为 on时

这样设置的话如果地图和事件都比较多就很麻烦,能不能在脚本中统一设置?

作者: 弗雷德    时间: 2014-8-19 11:55
设置里不是有吗?

# 设置触发确认    $game_map.events[@event_id].le_true = true/false
# 功能:该值表示该NPC是否看见了主角,等价于触发开关,默认为false。

在事件里加上这个的判断:
if $game_map.events[@event_id].le_true == true
播放动画
等待帧数
end
未尝试,不负责。

另外,这个脚本效果其实渣爆了。还不如俺这个渣渣的:http://pan.baidu.com/s/1i3uuyTv
不过没有画视线。
作者: HзO    时间: 2014-8-19 13:50
弗雷德 发表于 2014-8-19 11:55
设置里不是有吗?

# 设置触发确认    $game_map.events[@event_id].le_true = true/false

我希望在脚本中设置,而不是在事件里设置。
我在def see下面添加了一句(红色部分),假设事件1是敌人,当角色接近后事件1确实显示了动画。但是如果在事件1和角色当中加上一个障碍物事件2,虽然角色被障碍物遮住事件1同样会显示动画,我希望事件1没发现角色的时候不要显示动画

  def see
    @le_true = false
    if ($game_player.x-@x).abs<@le_deepness and ($game_player.y-@y).abs<@le_deepness
      difference_x = ($game_player.x - @x).abs
      difference_y = ($game_player.y - @y).abs
      case @direction
      when 2
        return if @le_circle != true and $game_player.y < @y
        unless @le_side and (difference_y == 0 and difference_x == 1)
          return if difference_x.to_f/difference_y > @le_slope
        end
      when 4
        return if @le_circle != true and $game_player.x > @x
        unless @le_side and difference_y == 1 and difference_x == 0
          return if difference_y.to_f/difference_x > @le_slope
        end
      when 6
        return if @le_circle != true and $game_player.x < @x
        unless @le_side and difference_y == 1 and difference_x == 0
          return if difference_y.to_f/difference_x > @le_slope
        end
      else
        return if @le_circle != true and $game_player.y > @y
        unless @le_side and difference_y == 0 and difference_x == 1
          return if difference_x.to_f/difference_y > @le_slope
        end
      end
      if @le_mode == 0
        return if (difference_x ** 2 + difference_y ** 2) > le_deepness ** 2
      end
      @le_true = scan_line
      $game_map.events[@id].animation_id = 98
      if @le_ss and @le_true !=true
        @le_trace[0,0] = -1
      end
    end
  end
作者: 弗雷德    时间: 2014-8-19 14:14
我记得event类下好像没有动画的函数,把这些东西写进character里吧,直接写event是不生效的。




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