如何在Sprite Kit中计算应用于物理体的力矢量?

时间:2014-06-18 15:56:03

标签: ios7 box2d sprite-kit

我正在制作Lular Lander游戏。我有一个Lander对象,为简单起见,我们想象它是简单的方形。

当我点击屏幕时,我将力施加到所述方格,默认为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);
}

现在我的旋转已经改变,我想要相对于新方向应用力。 所以,例如,如果我的Lander旋转是向右90度我想要应用(40,0)冲动。

如何计算应用于物理机构的新力矢量?

将Box2d添加为标签,因为它下面是Box2d physics。

1 个答案:

答案 0 :(得分:2)

考虑到你有轮换

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];