我想要做一個無限循環與我SKSpriteNodes
/SKNode
,但循環無法正常工作。斯威夫特雪碧套件通話功能再次
給你我的遊戲的想法,有2個長的目標,在屏幕的底側,並與它們其間的空隙彼此相鄰催生。 兩個目標之間是contactNode,它決定如果玩家穿過牆壁或沒有,得分點。 目標無限生成。
比賽開始後,它會調用函數addObjectives
。一個小的延遲之後,我想再次調用相同的功能,新的節點,而舊催生了一個仍然存在,並移動到用新的頂部。
但是用我的代碼,在節點到達Update:
給定的點後,它們停止,場景再次調用函數,新節點移動到該點並再次停止。一個無限循環。
我不想在addObjectives
被再次調用後停止節點,它們應該從屏幕的底部產生並移動到頂部,然後被移除,同時總是會從底部產生新的目標。
我該怎麼做?
...
var contactNode = SKNode()
...
func addObjectives(){
O1 = SKSpriteNode(imageNamed: "Objective.png")
O1.size = CGSize(width: self.frame.size.width/1.3, height: self.frame.size.height/17)
O1.position = positions[randomPosition()]
O1.zPosition = 3
...
self.addChild(O1)
O2 = SKSpriteNode(imageNamed: "Objective.png")
O2.size = CGSize(width: self.frame.size.width/1.3, height: self.frame.size.height/17)
O2.position = CGPoint(x: O1.position.x + CGFloat(Gap), y: O1.position.y)
O2.zPosition = 3
...
self.addChild(O2)
contactNode.physicsBody = SKPhysicsBody(rectangleOfSize:CGSize(width: CGFloat(Gap)/2, height: O1.size.height))
contactNode.position = CGPoint(x: O1.position.x + (CGFloat(Gap)/2), y: O1.position.y - 20)
contactNode.physicsBody?.dynamic = false
contactNode.physicsBody?.categoryBitMask = ScoreCategory
contactNode.physicsBody?.contactTestBitMask = PlayerCategory
contactNode.physicsBody?.collisionBitMask = 0
self.addChild(contactNode)
}
//Called in the Update Method
func ScrollingMauer(){
O1.position = CGPointMake(O1.position.x, O1.position.y + Speed)
O2.position = CGPointMake(O2.position.x, O2.position.y + Speed)
contactNode.position = CGPointMake(contactNode.position.x, contactNode.position.y + Speed)
if(O1.position.y > self.frame.size.height + O1.size.height)
{
O1.removeFromParent()
}
if(O2.position.y > self.frame.size.height + O2.size.height)
{
O2.removeFromParent()
}
if(contactNode.position.y > self.frame.size.height + Mauer2.size.height)
{
contactNode.removeFromParent()
}
// Here the Function is called again, but the previous spawned
Objectives stop and the new Objectives come from the bottom to the top.
if(O1.position.y > self.frame.size.height/3)
{
self.addObjectives()
}
}
非常感謝您的回答!但我不想只添加contactNode一次,它應該總是與其他2個SpriteNode一起添加。另外,如何在不停止添加的舊目標的情況下再次調用函數'addObjectives'? 我更新我的帖子並添加遊戲理念來澄清項目。 – Albert 2015-04-02 12:56:59
那麼爲什麼不在設置其屬性之前創建聯繫節點呢? – giorashc 2015-04-02 13:12:12
這不正是我所做的?我創建contactNode的目標是將它們移到一起。 contactNode是一個簡單的SKNode,只有一個physicsBody。如果我誤解了你,請爲我澄清! – Albert 2015-04-02 13:16:22