Ios7 如何计算施加于我的物理身体的力矢量?

Ios7 如何计算施加于我的物理身体的力矢量?,ios7,box2d,sprite-kit,Ios7,Box2d,Sprite Kit,我正在做一个Lular着陆器游戏。我有一个着陆器物体,为了简单,让我们想象它是简单的正方形 当我轻触屏幕时,我将力施加到所述正方形上,默认情况下它是CGVectorMake(0,40) 这使正方形慢慢向上移动 现在我想基于加速度计旋转精灵,我是这样做的: // update method CGFloat updatedAccelX = accelerX; CGFloat updatedAccelY = -accelerY; CGFloat angle = vectorAngle(CGPoint

我正在做一个Lular着陆器游戏。我有一个着陆器物体,为了简单,让我们想象它是简单的正方形

当我轻触屏幕时,我将力施加到所述正方形上,默认情况下它是
CGVectorMake(0,40)
这使正方形慢慢向上移动

现在我想基于加速度计旋转精灵,我是这样做的:

// update method

CGFloat updatedAccelX = accelerX;
CGFloat updatedAccelY = -accelerY;
CGFloat angle = vectorAngle(CGPointMake(updatedAccelX, updatedAccelY)) - 1.61;
self.lander.zRotation = angle;

// end of update

static inline CGFloat vectorAngle(CGPoint v){
    return atan2f(v.y, v.x);
}
现在我的旋转已经改变,我想相对于新的方向应用力。 例如,如果着陆器向右旋转90度,我想施加(40,0)冲量

我如何计算新的力矢量来应用于物理体


添加Box2d作为标记,因为它下面是Box2d物理。

考虑到您有旋转

float rotation = lander.zRotation;
您可以按如下方式计算着陆器的矢量:

rotation += M_PI_2;

float intensity = 40.0;

CGVector newVec = CGVectorMake(intensity * cosf(rotation), intensity * sinf(rotation));

[lander.physicsBody applyForce:newVec];