我想在基于physicsBody旋转的方向上使用applyImpulse方法移动physicsBody。
敌人的例子,物理身体是一个方形的形状,我称之为“移动”,它将施加一个冲动,使其垂直向上移动。然后我调用一个方法将physicsBody旋转45度。如果我再次调用“move”方法,physicsBody将向右和向上对角移动。
有人可以帮忙吗?
答案 0 :(得分:3)
我建议您遵循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)];
答案 1 :(得分:2)
<强>更新:强>
由于@ 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)];
}