赞 | 2 |
VIP | 33 |
好人卡 | 33 |
积分 | 14 |
经验 | 54000 |
最后登录 | 2024-9-21 |
在线时间 | 1295 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1358
- 在线时间
- 1295 小时
- 注册时间
- 2012-8-4
- 帖子
- 749
|
5楼
发表于 2014-9-18 23:11:43
手机端发表。
|
只看该作者
夜狠简单 发表于 2014-9-18 19:06
楼主稍等。我帮你做。你觉得他那样判断一个事件一个事件写麻烦对吧
找到scene_map脚本页
然后看下面的
if input.trigger?(input:: F7)
.......
end
这段内容就是计算事件和主角距离的了
# 按照地图、实例、主角的顺序刷新 # (本更新顺序不会在满足事件的执行条件下成为给予角色瞬间移动 # 的机会的重要因素) $game_map.update $game_system.map_interpreter.update $game_player.update # 系统 (计时器)、画面刷新 $game_system.update $game_screen.update if Input.trigger?(Input::F7) a=$game_map.events.size #取地图事件个数 $zuobiao=[] $zuobiaofz=[] $geshu=[] $xunhuanjishu=0 b=$game_player.x#取主角x坐标 c=$game_player.y#取主角y坐标 for i in 1..a x=$game_map.events.x #取事件x坐标 y=$game_map.events.y #取事件y坐标 d=Math.sqrt((b-x)**2+(c-y)**2) #计算两点间的距离 $zuobiao[i-1]=d $zuobiaofz[i-1]=d end #数组按小到大排列顺序 e=$zuobiaofz.sort![0] #计算事件离主角距离相同的情况 $zuobiao.each{|i| $geshu.push $xunhuanjishu if i==e $xunhuanjishu+=1 } #输出离主角最近的事件ID和事件名称 for g in 0..$geshu.size-1 h=$geshu[g] p $game_map.events[h+1].id#暂时定义为用p输出,这里可以改为自己喜欢的方式 end end # 如果主角在场所移动中就中断循环 unless $game_temp.player_transferring break end # 执行场所移动 |
|