旋转节点以查看另一个节点

Rotate node to look at another node

Cocos Creator - 我有一个节点,我想旋转到另一个节点,这是我正在使用的代码:

update: function (dt) {
    this.rotate();
},

rotate: function () {
    var diff =  this.target.position - this.node.position;
    var angle = Math.atan2(diff.x, diff.y);
    this.node.rotation = cc.radiansToDegress(angle);
},

但它根本不旋转,我试图搜索 docs 但找不到任何有用的东西。

var diff =  this.target.position - this.node.position;

您基本上是在尝试从一个对象中减去一个对象。检查

{'x':2, 'y':3} - {'x':4, 'y':6} 

在您的 JS 控制台中。结果是NaN 您需要手动减去每个维度。

var diff = {
'x' : this.target.position.x - this.node.position.x,
'y':this.target.position.y - this.node.position.y 
};

对这个问题表示歉意,但由于这是一个热门搜索结果,我只想补充一点,这里的问题是 Math.atan2 的签名将它的坐标向后:

语法:

Math.atan2(y, x)

来源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2