SpriteKit通过applyImpulse移动旋转physicsBody

我想用applyImpulse方法在基于physicsBody旋转的方向上移动一个physicsBody。

例如,physicalBody是一个正方形的形状,我称之为“移动”,它会施加一个冲动,使它垂直向上移动。 然后我调用一个方法将物理旋转45度的权利。 如果我再次调用“移动”方法,physicalBody将向右和向上对angular移动。

任何人都可以帮忙吗?

我build议你遵循Sprite Kit的坐标和旋转约定。 具体而言,您的精灵图像应该朝向零度(默认值),而正值是逆时针旋转。 也就是说,这里有一个方法来应对一个精灵正面临的冲动:

// Specify the force to apply to the SKPhysicsBody CGFloat r = 5; // Create a vector in the direction the sprite is facing CGFloat dx = r * cos (sprite.zRotation); CGFloat dy = r * sin (sprite.zRotation); // Apply impulse to physics body [sprite.physicsBody applyImpulse:CGVectorMake(dx,dy)]; 

更新:

修正以下感谢@ 0x141E

 -(void)characterJump { CGFloat radianFactor = 0.0174532925; CGFloat rotationInDegrees = _body.zRotation / radianFactor; CGFloat newRotationDegrees = rotationInDegrees + 90; CGFloat newRotationRadians = newRotationDegrees * radianFactor; CGFloat r = 500; CGFloat dx = r * cos(newRotationRadians); CGFloat dy = r * sin(newRotationRadians); [_body.physicsBody applyImpulse:CGVectorMake(dx, dy)]; }