【发布时间】:2024-01-06 11:32:01
【问题描述】:
我正在尝试编写一个嘴部分,它将直接位于位图的前面,但需要是一个单独的对象。
目前我的代码如下所示:
// LOCATION:
var xDistance = stage.getStage().mouseX - player.x;
var yDistance = stage.getStage().mouseY - player.y;
var distance = Math.sqrt(xDistance * xDistance + yDistance * yDistance);
var x = player.x += xDistance * easingAmount;
var y = player.y += yDistance * easingAmount;
if (distance > 1) {
player.x += xDistance * easingAmount;
player.y += yDistance * easingAmount;
}
// ROTATION:
var degrees = (Math.atan2(yDistance, xDistance) * 180 / Math.PI) - 90;
if(degrees >= 360) {
degrees -= 360;
}
player.rotation = degrees;
stage.update();
显然使用以下代码会将嘴巴的 x 和 y 值 -50 放在玩家的方向上,但这仅适用于 1 个方向,而不是将嘴巴保持在玩家面前:
mouth.x = player.x - 50;
mouth.y = player.y - 50;
我想知道是否有人可以帮助我解决这个数学问题?我真的很感激。这里有 2 张图片可以更好地说明问题:
【问题讨论】:
-
真的很难理解你到底想要什么……你想让玩家与嘴保持恒定距离并随之旋转吗?
-
这和数学有什么关系?
-
@Ness 是的,这正是我想要的。
标签: javascript math rotation