设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3822|回复: 8
打印 上一主题 下一主题

[已经解决] 如何判断在某几个事件中离本事件最近的事件是那个?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
45 小时
注册时间
2009-10-6
帖子
229
跳转到指定楼层
1
发表于 2010-6-28 09:30:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑

最佳答案

查看完整内容

先在脚本里插让地图能读取,然后事件里放脚本最后由1号变量算出最近事件id,2号变量算出距离(- -b怎么像在做数学题目...)

点评

你的问题有人解答了,请做出回应。若5天内没有回应,将由斑竹做出认可。  发表于 2010-7-4 11:08
战争乃至凶之物,它扭曲人性,
摧残信仰,它拆散家庭,
毁灭国家。任何灾难,
都与之相形见拙。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2010-6-28 09:30:45 | 只看该作者
本帖最后由 zhangbanxian 于 2010-6-28 10:25 编辑

先在脚本里插
  1. class Game_Map
  2.   attr_reader   :map
  3. end
复制代码
让地图能读取,然后事件里放脚本
  1. $game_variables[2] = 10000000
  2. @s = 0
  3. for i in $game_map.map.events.keys
  4. next if [2].include?(i) #不要判断的事件id
  5. a = $game_map.map.events[i].x - $game_player.x
  6. b = $game_map.map.events[i].y - $game_player.y
  7. @s = Math.sqrt(a*a+b*b)
  8. if @s < $game_variables[2]
  9. $game_variables[1] = i
  10. $game_variables[2] = @s
  11. end
  12. end
复制代码
最后由1号变量算出最近事件id,2号变量算出距离(- -b怎么像在做数学题目...)

点评

就是数学题……  发表于 2010-6-28 10:24
好歹当年也当过大魔王过,orz
回复

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3263
在线时间
3616 小时
注册时间
2006-9-6
帖子
37399

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

3
发表于 2010-6-28 09:36:26 | 只看该作者
你把它们的坐标代入变量,然后把主角的也代入,算出水平和垂直距离,然后直接或者用勾股定理算出距离,就知道哪个最近了  = =

点评

那还要看最小值。。。。。。。。  发表于 2010-6-28 10:48
回复

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1435
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

4
发表于 2010-6-28 09:49:55 | 只看该作者
补充一句:距离的平方就可以了,貌似RM开方很麻烦。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
45 小时
注册时间
2009-10-6
帖子
229
5
 楼主| 发表于 2010-6-28 10:47:16 | 只看该作者
来个更简单的。。。。。看不懂
战争乃至凶之物,它扭曲人性,
摧残信仰,它拆散家庭,
毁灭国家。任何灾难,
都与之相形见拙。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
6
发表于 2010-6-28 11:00:01 | 只看该作者
回复 玛尔斯 的帖子
这个是两点间距离公式,你不理解的话也没有其他办法了,只有去翻翻数学教材了
(- -b话说你可以直接复制)


   

点评

说白了还是循环算出两点距离然后判断是否比前面判定的那个最小值更小。  发表于 2010-6-28 20:24
貌似N个点的距离  发表于 2010-6-28 11:34
回复

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1558
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

7
发表于 2010-6-28 11:05:46 | 只看该作者
  1. class Interpreter
  2.   def find_nearest_event(x,y)
  3.     max = $game_map.events[1]
  4.     for id in 1..$game_map.events.size
  5.       i = $game_map.events[id]
  6.       distance1 = (i.x - x).abs ** 2 + (i.y - y).abs ** 2
  7.       distance2 = (max.x - x).abs ** 2 + (max.y - y).abs ** 2
  8.       if distance1 < distance2 && i.name[0,2] == "dt"
  9.         max = i
  10.       end
  11.     end
  12.     return max.id
  13.   end
  14. end
复制代码
事件 脚本 find_nearest_event(x,y),本事件的坐标表示方法为:
$game_map[@event_id].x,$game_map[@event_id].y
此方法会返回事件id
需要计算距离的事件名称请用dt开头
[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-28
帖子
23
8
发表于 2010-6-28 13:24:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6245
在线时间
558 小时
注册时间
2018-6-5
帖子
129
9
发表于 2018-6-9 14:22:41 | 只看该作者
自己数格子呗
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-25 20:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表