Project1

标题: 如何让事件触发事件? [打印本页]

作者: mariofans    时间: 2013-11-9 15:29
标题: 如何让事件触发事件?
本帖最后由 mariofans 于 2013-11-13 20:59 编辑

如题。当任意事件或角色走到某一个事件的位置就触发该事件。
如果能设置只有[允许穿透OFF]的事件才能触发就更好了。
作者: fux2    时间: 2013-11-9 16:43
并行事件里判断需要触发角色的坐标。
作者: mariofans    时间: 2013-11-9 16:58
fux2 发表于 2013-11-9 16:43
并行事件里判断需要触发角色的坐标。

是让事件触发诶,不是指定事件是任何事件都可以触发。
作者: 纸鸢    时间: 2013-11-9 23:14
本帖最后由 纸鸢 于 2013-11-9 23:21 编辑
  1. $id1=1;$id2=2; ((($game_map.events[$id1].x-$game_map.events[$id2].x)^2==1 && ($game_map.events[$id1].y-$game_map.events[$id2].y)^2==0) or (($game_map.events[$id1].x-$game_map.events[$id2].x)^2==0 && ($game_map.events[$id1].y-$game_map.events[$id2].y)^2==1)) or ((($game_map.events[$id1].x-$game_player.x)^2==1 && ($game_map.events[$id1].y-$game_player.y)^2==0) or (($game_map.events[$id1].x-$game_player.x)^2==0 && ($game_map.events[$id1].y-$game_player.y)^2==1))
复制代码
$id1:目标事件id;
$id2:一个其它任意事件id.

这个办法的缺点:如果事件多的话会很麻烦,应当还有更简单的办法,交给楼下处理好了...
作者: guoxiaomi    时间: 2013-11-10 00:34
事件设置为并行处理

事件脚本
@x = $game_map.events[@event_id].x
@y = $game_map.events[@event_id].y
$game_switches[1] = false
$game_map.events.value.each do |event|
  if event.id != @event_id and (event.x - @x)**2 + (event.y - @y)**2 < 1
    $game_switches[1] = true
    break
  end
end

条件分歧:
开关1 打开时 触发默认事件
开关1 关闭时 中断事件处理

避免烧掉CPU:
等待 1 帧

接楼上的话,写了个循环,这样应该可以用吧……
进一步处理交给楼下好了~O(∩_∩)O~
作者: 芯☆淡茹水    时间: 2013-11-10 08:07
guoxiaomi 发表于 2013-11-10 00:34
事件设置为并行处理

事件脚本

直接:
  1. for event in $game_map.events
  2.   $game_switches[1] = true if event.x == ? and event.y == ?
  3. end
复制代码

作者: mariofans    时间: 2013-11-13 21:01
综合以上各位的意见,自己整出来个……
(本来想评分但是不能评……)

未标题-1.png (118.81 KB, 下载次数: 5)

未标题-1.png

作者: 精灵使者    时间: 2013-11-13 21:30
把事件要触发的事件写到公共事件里,条件设置并行和触发开关号
于是这个事件要触发的时候,打开开关(别忘记在公共事件执行完毕后关闭此开关)




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