2016-04-27 33 views
0

因此,本質上,我正在製作平臺跳板遊戲。當玩家與平臺發生碰撞時,玩家會在y軸上向上獲得一個力夯。下面的代碼給出了模擬播放器後面的視圖。當他以y軸向下時,它也跟隨玩家。我不想那樣。當玩家向上時,只希望中場,前場和後場向下移動。只有當玩家在Y軸上向上時,纔會移動地面視差

Gamescene.swift:

class GameScene: SKScene, SKPhysicsContactDelegate { 

var background:SKNode! 
var midground:SKNode! 
var foreground:SKNode! 




required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

} 

override init(size: CGSize){ 
    super.init(size: size) 

    background = createBackground() 
    addChild(background) 

    midground = createMidground() 
    addChild(midground) 

    foreground = SKNode() 
    addChild(foreground) 

    player = createPlayer() 
    foreground.addChild(player) 

} 

override func update(currentTime: CFTimeInterval) { 

    if player.position.y > 200{ 
     background.position = CGPoint(x: 0, y: -((player.position.y - 200)/10)) 
     midground.position = CGPoint(x: 0, y: -((player.position.y - 200)/4)) 
     foreground.position = CGPoint(x: 0, y: -((player.position.y) - 200)) 
    } 

}

回答

1

您可以檢查球員位置。

var PlayerPosition1 = 0 

override func update(currentTime: CFTimeInterval) { 

    if player.position.y > 200{ 
     if player.position.y > PlayerPosition1{ 
      background.position = CGPoint(x: 0, y: -((player.position.y - 200)/10)) 
      midground.position = CGPoint(x: 0, y: -((player.position.y - 200)/4)) 
      foreground.position = CGPoint(x: 0, y: -((player.position.y) - 200)) 
     } 
    } 

    PlayerPosition1 = player.position.y 
} 

類似的東西應該工作..

編輯: 沒關係啊..這不是一個真正的「滯後」 ..背景觸摸平臺在剛移回「老」的位置。 。試試這個:

var PlayerMaxY = CGFloat() 

    if player.position.y > 200 { 
     if player.position.y > PlayerMaxY{ 
      PlayerMaxY = player.position.y 
      background.position = CGPoint(x: 0, y: -((player.position.y - 200)/10)) 
      midground.position = CGPoint(x: 0, y: -((player.position.y - 200)/4)) 
      forefround.position = CGPoint(x: 0, y: -((player.position.y - 200))) 
     } 
    } 
+0

我試過類似的東西,但是一旦玩家碰到平臺,一切都會滯後。不像內存lagg,當它從平臺啓動時,有些東西完全關閉 – rkoi95

+0

您能否顯示代碼或您做的與我的「解決方案」不同的內容? – aignetti

+0

我只是將我的代碼替換爲您的代碼並添加變量。除此之外,當它與sknode平臺發生碰撞時,我的平臺會提供「player.physicsbody?.velocity.dy = CGFloat(700)」。 – rkoi95

相關問題