我的代碼遇到了一些麻煩。我試圖讓殭屍按照我的球員用下面的代碼周圍:如何使SKSpriteNode跟隨另一個SKSpriteNode
class GameScene: SKScene, SKPhysicsContactDelegate {
func Enemies() {
Enemy = SKSpriteNode(imageNamed: "Spaceship")
Enemy.size = CGSize(width: 50, height: 50)
Enemy.color = UIColor(red: 0.9, green: 0.1, blue: 0.1, alpha: 1.0)
Enemy.colorBlendFactor = 1.0
//physics
Enemy.physicsBody = SKPhysicsBody(rectangleOf: Enemy.size)
Enemy.physicsBody?.isDynamic = true
Enemy.physicsBody?.affectedByGravity = false
Enemy.name = "Enemy"
Enemy.position.y = -frame.size.height/2
let positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
addChild(Enemy)
}
override func didMove(to view: SKView) {
enemyTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(GameScene.Enemies), userInfo: nil, repeats: true)
override func update(_ currentTime: TimeInterval) {
Enemy.run(SKAction.move(to: ship.position, duration: 3))
}
如果我運行這段代碼,我可以生成殭屍,但他們不會跟着我的主力球員,他們將只是去(即在時間= 0產生的殭屍會在時間= 0時進入船隻位置,在時間= 1時產生的殭屍將在時間= 1時進入船隻位置,依此類推)。但是,如果我運行此代碼,而只產生一個殭屍像這樣:
override func didMove(to view: SKView) {
Enemies()
}
孤獨的殭屍會跟隨我的玩家。任何想法爲什麼代碼適用於一個殭屍,但不適用於多個殭屍?
很多問題在這裏...你不應該使用計時器。它不與遊戲循環配對。其次,你不應該每秒執行60次新動作來實現[target and a seeker behavior](http://stackoverflow.com/a/36235426/3402095)接下來,要記住的一件好事是該行爲一經創建就無法修改。意思是,當你設置動作的參數一次,你不能以後修改它們。此外,你的敵人變量是全球性的,這對我來說沒有意義。它只保留對最後一個敵人的引用。我的意思是說,你的邏輯在這種情況下可能是錯誤的...... – Whirlwind