ios sprite-kit physics skphysicsbody

ios - SpriteKit mueve física rotadacuerpo con applyImpulse



sprite-kit physics (2)

ACTUALIZADO:

Corregido con el siguiente gracias a @ 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)]; }

Quiero mover un physicsBody con el método applyImpulse en una dirección basada en la rotación physicsBody.

Por ejemplo, PhysicsBody tiene forma cuadrada, yo llamo "movimiento" y aplicaré un impulso para que se mueva verticalmente. Luego llamo a un método para rotar el cuerpo físico 45 grados a la derecha. Si vuelvo a llamar al método "mover", physicsBody se moverá en diagonal hacia la derecha y hacia arriba.

¿Alguien puede ayudar, por favor?


Sugiero que sigas las convenciones de rotación y coordenadas de Sprite Kit. Específicamente, la imagen de su sprite debe mirar hacia la derecha a cero grados (el valor predeterminado), y un valor positivo es una rotación en sentido contrario a las agujas del reloj. Dicho esto, esta es una forma de aplicar un impulso en la dirección que enfrenta un sprite:

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