2013-02-14 76 views
0

我试图让我的对象始终面对我的玩家,但我正在努力与它背后的数学。到目前为止,我的对象确实在我的球员移动的位置旋转,但它不一致。HTML5 JavaScript - 旋转对象面对目标

这是我用我的旋转对象:

var targetX = player.x - this.width/2; 
var targetY = player.y - this.height/2; 

this.rotation = Math.atan2(targetY, targetX); 
ctx.transform(1, 0, 0, 1, this.x, this.y); 

//ART WORK 
ctx.save() 
    ctx.translate(15, 15); 
    ctx.rotate(this.rotation); 

    ctx.fillStyle = "866c4a"; 
    ctx.fillRect(-15, -15, this.width, this.height); 
ctx.restore(); 

就像我说的,它不能正常工作,我相信这是我的数学做。

谢谢

回答

0

好吧!

我立即发现问题是什么。我没有考虑到对象的位置:

var targetX = player.x - this.x; 
var targetY = player.y - this.y; 

this.rotation = Math.atan2(targetY, targetX); 
ctx.transform(1, 0, 0, 1, this.x, this.y); 

//ART WORK 
ctx.save() 
    ctx.translate(15, 15); 
    ctx.rotate(this.rotation); 

    ctx.fillStyle = "866c4a"; 
    ctx.fillRect(-15, -15, this.width, this.height); 
ctx.restore(); 

我会离开这个QnA,因为别人会遇到这个问题。 :)