Ios7 如何计算施加于我的物理身体的力矢量?
我正在做一个Lular着陆器游戏。我有一个着陆器物体,为了简单,让我们想象它是简单的正方形 当我轻触屏幕时,我将力施加到所述正方形上,默认情况下它是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
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];