在游戏制作中,有一个人工智能,我正在尝试设计.这个AI会根据物体离它的距离来选择要首先拍摄的物体。然而,该人工智能系统不仅计算一个物体的距离,而且计算多个物体的距离。因此: instance_nearest无法工作,因为它可能只用于计算特定于的对象的距离。
下面是代码:
if object_exists(E_soldier_AI){
if(distance_to_object(E_soldier_AI) < global.Dis){
var t1 = instance_nearest(x,y,E_soldier_AI).x;
var t2 = instance_nearest(x,y,E_soldier_AI).y;
instance_create(t1 ,t2, NB);
}
}
if object_exists(E_soldier_AI2){
if(distance_to_object(E_soldier_AI2) < global.Dis){
var t1 = instance_nearest(x,y,E_soldier_AI2).x;
var t2 = instance_nearest(x,y,E_soldier_AI2).y;
instance_create(t1 ,t2, NB3);
}
}
if object_exists(E_soldier_AI3){
if(distance_to_object(E_soldier_AI3) < global.Dis){
var t1 = instance_nearest(x,y,E_soldier_AI3).x;
var t2 = instance_nearest(x,y,E_soldier_AI3).y;
instance_create(t1 ,t2, NB4);
}
}
if object_exists(ETank_AI){
if(distance_to_object(ETank_AI) < global.Dis){
var t1 = instance_nearest(x,y,ETank_AI).x;
var t2 = instance_nearest(x,y,ETank_AI).y;
instance_create(t1 ,t2, NB2);
}
}这段代码也不会“剪切它”,因为代码似乎只检查对象E_soldier_AI是否存在,以及" if“语句下面的命令,但是它没有考虑其他的"if”语句。
发布于 2016-10-31 15:38:55
我不能百分之百肯定你想做什么,也不熟悉GameMaker。然而,根据我的理解,您需要解析可用敌人的距离,并选择最接近攻击的敌人。
尝试这样的方法(部分psuedo代码):
var closestDistance = 5000, closestT1, closestT2, closestEnemy;
if object_exists(E_soldier_AI){
if(distance_to_object(E_soldier_AI) < global.Dis){
closestDistance = distance_to_object(E_soldier_AI);
closestT1 = instance_nearest(x,y,E_soldier_AI).x;
closestT2 = instance_nearest(x,y,E_soldier_AI).y;
closestEnemy = NB;
}
}
if object_exists(E_soldier_AI2){
if(distance_to_object(E_soldier_AI2) < closestDistance ){
closestDistance = distance_to_object(E_soldier_AI2);
closestT1 = instance_nearest(x,y,E_soldier_AI2).x;
closestT2 = instance_nearest(x,y,E_soldier_AI2).y;
closestEnemy = NB3;
}
}
if object_exists(E_soldier_AI3){
if(distance_to_object(E_soldier_AI3) < closestDistance ){
closestDistance = distance_to_object(E_soldier_AI3);
closestT1 = instance_nearest(x,y,E_soldier_AI3).x;
closestT2 = instance_nearest(x,y,E_soldier_AI3).y;
closestEnemy = NB4;
}
}
... (Do the same for the tank)
instance_create(closestT1 ,closestT2 , closestEnemy);(下一步是把所有的敌人放到一个数组中,然后做一个循环)
https://stackoverflow.com/questions/40326282
复制相似问题