el modo horizontal no funciona correctamente en el juego spritekit

Comencé un juego de plataforms en spriteKit y tengo un pequeño problema con el modo horizontal. Cuando salto con mi héroe, uso el

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

y mientras el héroe está en el air y choca con una panetworking u object y pierde su velocidad, entonces uso el

 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint positionInScene = [touch locationInNode:self]; SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene]; CGPoint posicionHero = [self.world childNodeWithName:@"hero"].position; SKSpriteNode *touchHero = (SKSpriteNode *)[self nodeAtPoint:posicionhero]; //pragma mark -hero movement in the air if ((touchedNode != touchHero) && (positionInScene.x > [self.world childNodeWithName:@"hero"].position.x)) { [[self.world childNodeWithName:@"hero"].physicsBody applyImpulse:CGVectorMake(5, 0)]; } if ((touchedNode != touchHero) && (positionInScene.x < [self.world childNodeWithName:@"hero"].position.x)) { [[self.world childNodeWithName:@"hero"].physicsBody applyImpulse:CGVectorMake(-5, 0)]; } } 

para mantener esa velocidad He estado probando en modo vertical y todo estaba bien, pero mi juego está en modo horizontal, así que finalmente he bloqueado el juego en modo horizontal, y ahora lo estoy probando en modo horizontal y estoy teniendo problemas, porque Cuando muevo mi dedo en un salto, no pasa nada. En lugar de esto, tengo que mover el dedo hacia arriba para get ese movimiento. Estoy seguro de que me falta una configuration básica para mi modo horizontal. Cualquier ayuda será apreciada

Este es un problema común en los juegos de SpriteKit. Esto ocurre porque viewDidLoad realmente se ejecuta antes de que la aplicación compruebe la orientación del dispositivo. Puede solucionarlo reemplazando viewDidLoad con viewWillLayoutSubviews que se ejecutará después de la detección de orientación del dispositivo. Por ejemplo, puede replace la vista viewDidLoad viewDidLoad pnetworkingeterminada con esto:

 - (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; // Configure the view. SKView * skView = (SKView *)self.view; if (!skView.scene) { skView.showsFPS = YES; skView.showsNodeCount = YES; // Create and configure the scene. SKScene * scene = [MyScene sceneWithSize:skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. [skView presentScene:scene]; } } 

Para get más información, consulte estas fonts: UIViewController devuelve el marco inválido? http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners