2014-04-30 44 views
0

我正在創建一款iPhone遊戲,您可以在地形上飛行月球着陸器。背景圖像和地形相同,我將地形包裹在碰撞邊界中。Sprite-Kit場景滾動 - Objective-C/iOS

我在橫向模式下使用ipad,而im使用的背景/地形是ipad屏幕寬度的3倍。

我不想有無限的滾動地圖。我試圖做的是獲得它,以便當着陸器在屏幕的左側或右側250點內時,着陸器將不會繼續前進,並且後面的地面將會滾動,而仍然給出移動的幻覺。

-(void)update:(NSTimeInterval)currentTime { 

    if (touching) { // if the user is touching thrust node 

     CGVector movement = [self getVectorFromRotation:lander.zRotation andMagnitude:12000]; 

     if (lander.position.x > self.frame.size.width - 250) { 

      // move the background here.? 
      // example appreciated! 

    } else { 

      [lander.physicsBody applyForce: movement ]; 

    } 
} 

-(CGVector)getVectorFromRotation:(float)radians andMagnitude:(int)mag{ 


    float x = -mag * sin(radians); 

    float y = mag * cos(radians); 

    return CGVectorMake(x, y); 
} 

很明顯,我需要停下來時,有沒有更多的圖像上滾動到屏幕,如果我回去了另一個方向的背景不能移動,直到我來到內的邊中的一個250點。

不幸的是,我在屏幕上滾動時找不到的唯一的東西是「玩家」精靈被固定在一個位置,除了每邊250點之外,我想要自由移動。

所有幫助表示讚賞。

+0

我可以看到如何做到這一點,但它不會與您當前的代碼邏輯。你使用applyForce:來移動你的着陸器,這對物理對象來說很好,但你的背景不是物理對象。這意味着您不能根據着陸器對象的移動輕鬆地組合背景的移動。你可以做到這一點,如果你選擇了一個或另一個,但你想要兩個 - 遠程對象移動和背景移動。要做你想做的事情,你必須改變你的代碼邏輯,以非物理方式移動你的着陸器。例如:x = x + 1。 – sangony

回答

0

我無法使用物理引擎在sprite工具包中獲得所需的效果。這可能是通過其他方式實現的,但我很想重寫所有的代碼。

在這種情況下,我不得不使用簡單地使背景以恆定速度移動的代碼。