所以我不知道标题是否将我的问题带到了一个点上,而我的英语可能无法很好地完全解释它。幸运的是,代码可以:D
因此,我正在开发一款小型多人游戏,您可以在其中使用键盘控制一条线(速度为每秒 300 像素,您可以通过按键调整它的移动角度)。
每个玩家画一条无限线,当你的“蛇”.. idk 你会怎么称呼它.. 碰到黑色以外的东西(背景颜色)时,你就死了。寿命最长的玩家获胜。
您可以收集物品,其中一件物品是来自街头霸王的“Hadouken”,它以最近的玩家为目标并试图击中他(这里相同:速度和角度给定)。
每帧都会计算“Hadouken”角度。目标是玩家:
if (hadouken.aimTo)
{
var dx = hadouken.aimTo.x - hadouken.x;
var dy = hadouken.aimTo.y - hadouken.y;
var dist = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
hadouken.rad = Math.atan2(dy, dx);
if (dist < hadouken.aimTo.radius)
{
...
}
}
var plusX = hadouken.speed * _.timeFactor * Math.cos(hadouken.rad);
var plusY = hadouken.speed * _.timeFactor * Math.sin(hadouken.rad);
hadouken.x += plusX;
hadouken.y += plusY;
_.rotateDraw(hadouken, hadouken.x - hadoukenWidth / 2, hadouken.y - hadoukenHeight / 2, hadoukenWidth, hadoukenHeight, {rad: hadouken.rad}, function(x, y) {
_.drawImage(hadoukenImage, x, y, hadoukenWidth, hadoukenHeight);
});
但是这个东西总是有正确的角度并且会达到它的目标(速度 = targetSpeed * 1.5 ;))如果它在硬编码 5 秒后没有消失。你没有机会用你的线躲避它。我的曲线太尖锐了。
我的问题是:您能否以某种方式将角度的增加限制为 .. idk .. 30 度/秒?我确信我可以自己做到这一点,但这会很花哨,而且可能不必要地困难。
我希望这足够清楚,再次为我的英语感到抱歉,我希望得到一些答案:)