Abdou023
Abdou023

Reputation: 1664

Rotate node to look at another node

Cocos Creator - I have a node that I want to rotate towards another node, here is the code I'm using:

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);
},

But it's not rotating at all, I tried to search the docs but couldn't find anything helpful.

Upvotes: 1

Views: 2422

Answers (2)

ryanscottmurphy
ryanscottmurphy

Reputation: 418

Apologies to necro this question, but since this is a top search result I just wanted to add that the problem here is that the signature of Math.atan2 takes it's coordinates backwards:

Syntax:

Math.atan2(y, x)

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

Upvotes: 0

Роман Гуйван
Роман Гуйван

Reputation: 1128

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

You're basically trying to subtract an object from an object. Check

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

in your JS console. The result is NaN You need to subtract each dimension manually.

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

Upvotes: 2

Related Questions