精灵套件移动旋转的body与苹果脉冲



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

例如,物理物体是一个正方形,我称之为"移动",它会施加一个脉冲,使其垂直向上移动。然后我调用一个方法,将物理体向右旋转45度。如果我再次调用"移动"方法,物理体将向右斜向上移动。

我建议您遵循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)];
}

最新更新