我正在使用PaperJS创建一个简单的游戏,目前只停留在其中的一小部分。

在游戏中,有一个玩家(只有一个圆圈)有两只手(两个较小的圆圈)

我希望双手始终指向鼠标的位置,但是我无法弄清楚这样做的必要性。

这是到目前为止我拥有的一些代码,我只需要帮助就可以填补空白...

view.onMouseMove = function(event) {
    var mouseX = event.point.x;
    var mouseY = event.point.y;

    var rotation = ???

    playerHands.rotate(rotation, view.center)
}


这是我要完成的工作的图表:

最佳答案

很简单:

function onMouseMove(event) {
    let delta = (event.point - player.position);
    player.rotation = delta.angle+90;
}


这里的想法是您可以使用两个Points进行矢量几何。
Vector-Geometry Tutorial中有更详细的描述

由于paperjs将x轴旋转为0°,因此需要使+90偏移使鼠标与播放器顶部对齐。

我创建了一个工作的example in sketch.paperjs.org

仅当播放器player.rotationGroup设置为.applyMatrix时,上述false才有效。
另外,我在创建时将Player-Group pivot指向大圆圈中心:

let player = new Group(circle, handleleft, handleright);
player.applyMatrix = false;
player.pivot = circle.bounds.center;
player.position = position;

10-06 12:27