cocos2d游戏 旋转角度

来源:互联网 发布:小猪cms多少钱 编辑:程序博客网 时间:2024/04/28 01:42

 

为了旋转,我们首先需要计算出旋转的角度。为了解决这个问题,想想我们在高中时候学过的三角代数吧。还记得sin cos tan吗?为了便于理解,下面使用一张图来解释一下:tan = 对面/邻边。

  如上所示,我们想要旋转的角度是arctangent(angle),即对offY/offX求arctangent运算。

  然而,这里还有两件事情,我们需要放在心上。首先,当我们计算actangent(offY/offX)的时候,这个结果是弧度,但是cocos2d使用的却是角度。还好,cocosd2d提供了一个非常方便的宏,可以使得角度和弧度之间方便转化。

  第二点,我们假定上面的图中angle的偏转是正20度,但是,cocos2d里面顺时针方向为正(而不是上图所示的逆时针为正)。让我们看到下面这个图:

  因此,为了得到正确的方向,我们把运算结果乘以一个-1就可以了。比如,如果我们把上面那幅图片里的角度乘以-1的话,我们就得够得到-20度,这个角度其实就是逆时针方向的20度。(感觉老外说话好啰嗦啊,聪明的读者恐怕早就明白了吧!:)

  好了,讲得够多了!让我们来写一点代码吧。在ccTouchesEnded里面加入以下代码,添加位置在你的projectile runAction之前。

// Determine angle to face
float angleRadians= atanf((float)offRealY/ (float)offRealX);
float angleDegrees= CC_RADIANS_TO_DEGREES(angleRadians);
float cocosAngle= -1* angleDegrees;
_player.rotation
= cocosAngle;

  编译并运行工程,现在我们的炮塔在射击的时候可以改变方向了。

 

如果想在旋转时加上动画这个action:

[CCRotateTo actionWithDuration:rotateDuration angle:cocosAngle],

原文链接地址:http://www.raywenderlich.com/692/rotating-turrets

原创粉丝点击