我在Node.js / Socket.IO中创建一个小游戏,需要一些关于创建AI的建议。我下面的代码是我想出的一个真实的快速示例,但是它很快,玩家甚至看不到敌人在客户端移动。我是否采用这种方法处于正确的位置,还是我应该采用更好的方式来做这件事?
谢谢!
var random;
setInterval(function() {
random = Math.round(Math.random() * 200);
move(random, random);
console.log("Moving player");
}, 10000)
var move = function(targetX, targetY) {
if (x < targetX) {
while (x < targetX) {
x++;
sendNewCoordinates(x, y);
}
} else if (x > targetX) {
while (x > targetX) {
x--;
sendNewCoordinates(x, y);
}
} else if (y < targetY) {
while (y < targetX) {
y++;
sendNewCoordinates(x, y);
}
} else if (y > targetY) {
while (y > targetX) {
y--;
sendNewCoordinates(x, y);
}
}
};
var sendNewCoordinates = function(newX, newY) {
socket.sockets.emit("move enemy", {x: newX, y: newY});
};
答案 0 :(得分:1)
这实际上是一个非常好的AI!随机化运动之间的间隔对于这样的事情来说是一种非常简单,常用的技术。我很好奇,很想尝试你正在制作的任何东西!但要注意的一件事是确保AI不是 TOO 好。
您可以在代码中实现的另一件事是让您的AI“瞄准”稍微远离目标的点。例如:
var move = function(targetX + randomX, targetY + randomY)
您还可以在移动之前使用目标的位置来预测目标的位置。
var xChange = (targetX2 - targetX1)/(timeInterval1);
var yChange = (targetY2 - targetY1)/(timeInterval1);
var move = function(targetX + xChange * timeInterval2, targetY + yChange * timeInterval2)
其中timeInterval1是两个目标位置之间的时间间隔,timeInterval2是当前位置和下一个位置之间的时间间隔。
关键不在于让玩家的AI太难了。 ;)