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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3024
在线时间
652 小时
注册时间
2012-2-13
帖子
181
跳转到指定楼层
1
发表于 2019-4-2 18:24:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
50星屑
本帖最后由 大放异彩 于 2019-4-2 18:26 编辑



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号

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
2
发表于 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
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
3
发表于 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 塞糖

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3024
在线时间
652 小时
注册时间
2012-2-13
帖子
181
4
 楼主| 发表于 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) ...



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

点评

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 08:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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