我正在使用开放处理中的legs演示进行调整,并为我生成的蜘蛛尝试简单的规避AI。目标是让AI蜘蛛逃避玩家控制的玩家。我的代码:
float distance = sqrt((c2.currentX - creature.currentX)*(c2.currentX - creature.currentX)+(c2.currentY-creature.currentY)*(c2.currentY-creature.currentY));
if (distance < c2.radius){
c2.heading = atan(c2.heading);
if(millis() - time >= wait){
time = millis();
}
}
这位于我更新的draw()中,我得到了AI的响应,但响应是AI静止不动或从屏幕上拍摄。任何帮助将不胜感激。
答案 0 :(得分:1)
如果你想让AI蜘蛛直接离开玩家,那么像这样计算你的标题可能会更好(虽然很难说没有看到你的所有代码):
c2.heading = atan2(c2.currentY - creature.currentY, c2.currentX - creature.currentX);
它的作用是计算从creature
到c2
的角度,并将其用作标题。结果应该是c2
将直接远离creature
。
(我假设c2
是这里的AI蜘蛛!)
作为旁注,将角度传递到atan
不太可能给你任何有用的东西。它被设计为接受三角比率作为参数。 atan2
非常相似,但它通常更有用,因为它可以为您完成更多的工作。