上面是我的遊戲的圖像。自上而下的遊戲。無論玩家在屏幕上觸摸什麼位置,我都希望子彈能夠持續一段時間到達該位置。我也希望玩家能夠在屏幕上拖動他的手指,同樣的事情發生。這樣玩家每次想要拍攝時都不必觸摸屏幕。
到目前爲止,我已經嘗試了一些不同的東西,但似乎沒有任何工作。
首先,我不知道我是否應該有一個單獨的子彈功能。但無論如何,這是我的子彈功能。
func spawnBullets() {
let bullet = SKSpriteNode(imageNamed: "Bullet")
bullet.name = "Bullet"
bullet.zPosition = 4
bullet.position = CGPoint(x: player.position.x + 19, y:
player.position.y)
self.addChild(bullet)
}
我也有在didMove功能子彈了 「定時器」:
var timer = Timer.scheduledTimer(timeInterval: 0.1, target: self,
selector: Selector("spawnBullets"), userInfo: nil, repeats: true)
最後,這是我的touchesBegan功能:
override func touchesBegan(_ touches: Set<UITouch>, with event:
UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
let moveToPoint = SKAction.move(to: location, duration: 0.5)
let repeatAction = SKAction.repeatForever(moveToPoint)
bullet.run(moveToPoint)
}
}
當你運行這段代碼時會發生什麼?我沒有自己運行這個代碼,或者對它進行了太密切的分析,但是它會編譯嗎?我認爲'touchesBegan'中的'bullet.run'將會無法編譯,沒有'bullet'屬性,我會創建一個'bulletTarget'屬性,將其用作'moveTo'位置,並創建並應用SKActi在你的'spawnBullet'方法中移動buller。 –
我沒有得到任何錯誤,但子彈不動。我對應用程序開發有點新鮮,你是什麼意思的bulletTarget屬性? – Flinigan
你在touchesBegan中定義'bullet.run(moveToPoint)'中使用的'bullet'變量在哪裏?你必須在某個地方定義它(帶'var bullet = ...')。如果它是在任何方法之外定義的(所以在全局範圍內),那麼它被稱爲「財產」。但是這個'子彈'幾乎肯定不是'spawnBullets'中添加到場景中的'子彈',這就是爲什麼它們不會移動。我會稍後嘗試根據您的代碼發佈答案。 –