为什么Math.atan2对我不正常?

时间:2018-02-17 01:38:29

标签: javascript math rotation paperjs atan2

我试图创建一个简单的游戏,其中中心的矩形始终指向鼠标。出于某种原因,当我使用Math.atan2时,我得到的奇怪值永远不会超过3的角度...

Here's the sketch with my code

function onMouseMove(event) {
    var dx = event.point.x - view.center.x;
    var dy = event.point.y - view.center.y;
    var rotation = Math.atan2(dy, dx);

    console.log(rotation);
    player.rotation = rotation;
}

如果有人能够发现我做错了什么,甚至编辑草图以使其有效,那就太棒了。)

1 个答案:

答案 0 :(得分:1)

这里有三件事:

  1. 旋转使用paper.js添加到当前旋转,要禁用它,您需要设置applyMatrix: false
  2. 旋转以度为单位而不是弧度。您需要将atan2乘以180 / Math.PI
  3. 您应该使用player.center而不是view.center
  4. 以下是您可以使用的代码:

    var player = new Path.Rectangle({
        strokeColor: '#222222',
        strokeWidth: 10,
        fillColor: '#777777',
        size: [100, 80],
        center: view.center,
        applyMatrix: false
    });
    
    function onMouseMove(event) {
        var dx = event.point.x - player.center.x;
        var dy = event.point.y - player.center.y;
        var angle = Math.atan2(dy, dx) * 180 / Math.PI;
    
        console.log(angle);
        player.rotation = angle;
    }