基本的怪物运动

我是游戏开发新手。 特别是服务器端。 目前我正在尝试实施怪物的移动。 从A点到B点

我使用了一个*寻路库来计算path,但我不知道如何更新怪物在30帧中移动的逻辑。

我正在使用javascript / node.js,目前我正在做类似于:

// in game.update() if (!monster.isMoving) { var steps = char.getPathTo(83, 213); steps.forEach(function (cell) { char.move(cell[0], cell[1]); }); } 

当然这是错误的,因为它会首先评估所有的动作。 那么对此有什么可能的方法?

我跟着这个游戏循环

 var gameLoop = function () { var now = Date.now() actualTicks++ if (previousTick + tickLengthMs <= now) { var delta = (now - previousTick) / 1000 previousTick = now game.update(delta) actualTicks = 0 } if (Date.now() - previousTick < tickLengthMs - 16) { setTimeout(gameLoop) } else { setImmediate(gameLoop) } 

简单的说,给怪物一个高速,速度的速度分量,然后find方向到切线的下一个点的path,如果我记得正确的话就是y2-y1 / x2-x1,是x2和y2的点下一个位置是x1和y1怪物一个。 之后,使用余弦速度来查找y分量或者vspeed的x分量或者高速和正弦速度(负数,因为math笛卡尔图和函数对计算机的y是相反的)。

总结一下,你创建一个“追踪点”,找出它的方向,首先find方向,然后把每个元素乘以你想要的速度,得到每个元素。 达到当前点后,它开始跟随下一个。

还有一招。 为了检查它是否达到或不这样做:如果distance_to_next_point <speed {x = follow_point.xy = follow_point.y follow_point ++}基本上,如果速度大于距离,我们直接跳到它上面,这样可以避免重叠,你的怪物回到它。

希望这可以帮助或给你想法:)