2013-12-11 88 views
4

我在spriteKit中創建了一款平臺遊戲,並且我在橫向模式中遇到了一些問題。 當我做我的英雄跳,我用的是景觀模式在spritekit遊戲中無法正常工作

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

,雖然英雄是在空中,牆壁或者任何物體碰撞而錯過他的速度,然後我用

-(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)]; 
} 

} 

保持這個速度。 我一直在肖像模式下測試,一切正常,但我的遊戲是橫向模式,所以最後我已經阻止了遊戲風景模式,現在我在橫向模式下測試它,我遇到了麻煩,因爲當我在跳躍中向前移動手指時,沒有任何反應。取而代之的是,我必須向上移動手指才能獲得該動作。我確定我錯過了我的橫向模式的一些基本配置。任何幫助將是一個精選

+0

你有沒有嘗試改變X座標的Y座標?還要記住,locationInNode使用一個座標系統,其原點位於左下角,而不是UIViews中的左上角。 – lucaslt89

回答

8

這實際上是SpriteKit遊戲中的常見問題。發生這種情況是因爲viewDidLoad在應用程序檢查設備方向之前實際運行。您可以通過將viewDidLoad替換爲viewWillLayoutSubviews來解決該問題,該問題將在設備方向檢測後運行。例如,你可以替換默認SpriteKit viewDidLoad本:

- (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]; 
    } 
} 

欲瞭解更多信息,籤這些來源: UIViewController returns invalid frame? http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners

相關問題