Cocos2D / Math - 清洁角度转换

时间:2012-06-07 06:10:04

标签: math cocos2d-iphone

晨星' SO!

我只是想磨练自己的数学,我特别对Cocos2D有一些疑问。由于Cocos2D希望简化'事情,所有精灵都有旋转属性,范围从0-360(359?)CW。这会迫使你在处理像atan这样的函数时(对我来说)做一些精神上的转变。

所以f.ex.这个方法:

- (void)rotateTowardsPoint:(CGPoint)point
{    
    // vector from me to the point
    CGPoint v = ccpSub(self.position, point);

    // ccpToAngle is just a cute wrapper for atan2f
    // the macro is self explanatory and the - is to flip the direction I guess
    float angle = -CC_RADIANS_TO_DEGREES(ccpToAngle(v));

    // just to get it all in the range of 0-360
    if(angle < 0.f)
        angle += 360.0f;

    // but since '0' means east in Cocos..
    angle += 180.0f;

    // get us in the range of 0-360 again
    if(angle > 360.0f)
        angle -= 360.0f;

    self.rotation = angle;
}

按预期工作。但对我来说,这看起来有点暴力。 是否有更简洁的方法可以达到同样的效果?

2 个答案:

答案 0 :(得分:3)

这就足够了

float angle = -CC_RADIANS_TO_DEGREES(ccpToAngle(v));
self.rotation = angle + 180.0f;

用于等效转换

答案 1 :(得分:0)

// vector from me to the point
    CGPoint v = ccpSub(self.position, point);
实际上,这是从点到你的向量。

// just to get it all in the range of 0-360

你不需要这样做。