Project1
标题:
如何判断在某几个事件中离本事件最近的事件是那个?
[打印本页]
作者:
玛尔斯
时间:
2010-6-28 09:30
标题:
如何判断在某几个事件中离本事件最近的事件是那个?
QQ截图未命名.jpg
(158.61 KB, 下载次数: 37)
下载附件
保存到相册
2010-6-28 09:30 上传
作者:
zhangbanxian
时间:
2010-6-28 09:30
本帖最后由 zhangbanxian 于 2010-6-28 10:25 编辑
先在脚本里插
class Game_Map
attr_reader :map
end
复制代码
让地图能读取,然后事件里放脚本
$game_variables[2] = 10000000
@s = 0
for i in $game_map.map.events.keys
next if [2].include?(i) #不要判断的事件id
a = $game_map.map.events[i].x - $game_player.x
b = $game_map.map.events[i].y - $game_player.y
@s = Math.sqrt(a*a+b*b)
if @s < $game_variables[2]
$game_variables[1] = i
$game_variables[2] = @s
end
end
复制代码
最后由1号变量算出最近事件id,2号变量算出距离(- -b怎么像在做数学题目...)
作者:
越前リョーマ
时间:
2010-6-28 09:36
你把它们的坐标代入变量,然后把主角的也代入,算出水平和垂直距离,然后直接或者用勾股定理算出距离,就知道哪个最近了 = =
作者:
「旅」
时间:
2010-6-28 09:49
补充一句:距离的平方就可以了,貌似RM开方很麻烦。
作者:
玛尔斯
时间:
2010-6-28 10:47
来个更简单的。。。。。看不懂
作者:
zhangbanxian
时间:
2010-6-28 11:00
回复
玛尔斯
的帖子
这个是两点间距离公式,你不理解的话也没有其他办法了,只有去翻翻数学教材了
(- -b话说你可以直接复制)
作者:
逸豫
时间:
2010-6-28 11:05
class Interpreter
def find_nearest_event(x,y)
max = $game_map.events[1]
for id in 1..$game_map.events.size
i = $game_map.events[id]
distance1 = (i.x - x).abs ** 2 + (i.y - y).abs ** 2
distance2 = (max.x - x).abs ** 2 + (max.y - y).abs ** 2
if distance1 < distance2 && i.name[0,2] == "dt"
max = i
end
end
return max.id
end
end
复制代码
事件 脚本 find_nearest_event(x,y),本事件的坐标表示方法为:
$game_map[@event_id].x,$game_map[@event_id].y
此方法会返回事件id
需要计算距离的事件名称请用dt开头
作者:
tsy0302
时间:
2010-6-28 13:24
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Tsar_NicholasII
时间:
2018-6-9 14:22
自己数格子呗
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1