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