查看: 3536|回复: 20

[已经解决] 如何判断哪个NPC距离2号NPC最近?

[复制链接]
梦石
0
星屑
3030
在线时间
655 小时
注册时间
2012-2-13
回帖
151
发表于 2019-4-2 18:24:18 | 显示全部楼层 |阅读模式
悬赏50星屑已解决
本帖最后由 大放异彩 于 2019-4-2 18:26 编辑

QQ截图20190402181121.png

4-9号NPC是随机移动的,2号NPC也是随机移动的,虽然可以用变量来取得每一个NPC的X Y坐标,但是没办法准确的获取到距离2号NPC最近的是哪个NPC

1、2变量==2号NPC XY坐标
3、4变量==4号NPC XY坐标
5、6变量==5号NPC XY坐标
7、8变量==6号NPC XY坐标
9、10变量==7号NPC XY坐标
11、12变量==8号NPC XY坐标
13、14变量==9号NPC XY坐标

以上虽然可以获取到所有NPC的坐标,但是该如何判断哪个距离2号最近?
用事件脚本 if 对每个变量来判断?可是如何才算是接近2号?然后打开对应的开关,这样就好判断了....可是....我实在不懂怎么计算距离
实在是脑胀了,求各位大佬帮忙~

最佳答案

查看完整内容

a = 9999 id = 0 e = $game_map.events for j in 4..9 b=(e[j].x-e[2].x).abs+(e[j].y-e[2].y).abs if b < a id = j a = b end end $game_variables[1] = id 最后 id 的值就是当前最接近2号的ID 带入变量1号
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2019-4-2 18:24:19 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2019-4-2 19:44 编辑

a = 9999
id = 0
e = $game_map.events
for j in 4..9
  b=(e[j].x-e[2].x).abs+(e[j].y-e[2].y).abs
  if  b < a
     id = j
     a = b
  end
end
$game_variables[1] = id

最后 id 的值就是当前最接近2号的ID 带入变量1号

点评

严格的说,叫"菱形", 玩过战棋游戏的话,想像下那个移动范围, 那个菱形的算法就是这个  发表于 2019-4-3 11:32
这是圓形判斷嗎  发表于 2019-4-2 20:29
太久没用..都忘了距离怎么算了..记下记下..  发表于 2019-4-2 19:46
好了好了 谢谢你!!!!!嘿嘿~  发表于 2019-4-2 19:44
现在复制去吧  发表于 2019-4-2 19:43
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-4-2 19:08:08 | 显示全部楼层
本帖最后由 soulsaga 于 2019-4-2 19:13 编辑

nxy=[]
a=$game_variables[4]+$game_variables[5]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
a=$game_variables[6]+$game_variables[7]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
a=$game_variables[8]+$game_variables[9]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
a=$game_variables[10]+$game_variables[11]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
a=$game_variables[12]+$game_variables[13]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
a=$game_variables[14]+$game_variables[15]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs)
$game_variables[100]=nxy.index(nxy.min)

点评

也谢谢你的热心帮忙  发表于 2019-4-2 19:45
不对啊,无论怎么输出都是5  发表于 2019-4-2 19:30
好,我再试下  发表于 2019-4-2 19:15
报错了  发表于 2019-4-2 19:14
忘了取绝对值..更新一下..  发表于 2019-4-2 19:11

评分

参与人数 1赞 +1 收起 理由
大放异彩 + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3030
在线时间
655 小时
注册时间
2012-2-13
回帖
151
 楼主| 发表于 2019-4-2 19:32:37 | 显示全部楼层
soulsaga 发表于 2019-4-2 19:08
nxy=[]
a=$game_variables[4]+$game_variables[5]-$game_variables[2]+$game_variables[3]
nxy.push(a.abs) ...

QQ截图20190402193128.png QQ截图20190402193111.png QQ截图20190402193146.png

这个5是啥意思?5号距离2号最近吗?可是我已经把他挪到最远了

点评

玩家是2号NPC,我只是改了名字而已,并非角色  发表于 2019-4-2 19:34
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部