與sangony相反,我會認爲這是非常可能的,雖然我可能會錯過一些東西。
您是否可以不創建對SKAction
的引用,該引用是一個移動到X = 0並移動到X = size.width?的序列。如果永遠重複。
我不在我的Mac附近,所以我不能在XCode中獲得完美的語法,因此對任何錯誤表示歉意。另外這個假設場景將創建此引用,因此self.size.width
:
let moveLeft = SKAction.moveToX(0, duration: 3)
let moveRight = SKAction.moveToX(self.size.width, duration: 3)
let moveLeftThenRight = SKAction.sequence([moveLeft, moveRight])
let continousMovement = SKAction.repeatActionForever(moveLeftThenRight)
應用到派生的任何節點是最後的行動,你應該確定,如果我理解正確。
第一個移動速度很慢,因爲無論節點產生的位置總是需要3秒才能移動到左側。這可以通過固定得到它需要移動的距離的分數,乘以3:
let firstMovementDuration = (node.position.x/self.size.width) * 3
let firstMoveLeft = SKAction.moveToX(0, duration: firstMovementDuration)
從那裏繼續正常運動。還有timingMode
考慮更自然的運動,如.EaseInEaseOut
。
總之,不,你不能。你仍然需要有一個觸發器來做別的事情。如果你沒有定義那個觸發器,你的代碼就會毫無用處。 – sangony