スウィフト2 SpriteKit複数のスプライトキットノードを同じ名前で制御する方法は?
次のコードを使用して、ランダムに敵をランダムに生成し、プレイヤーに向かって移動します。しかし何らかの理由で、最初の敵だけがプレイヤーに向かって動き、残りは何もしません。私はこれに新しいので、すべての詳細が役に立ちます。 didmovetoviewの下
:
let wait = SKAction.waitForDuration(3, withRange: 2)
let spawn = SKAction.runBlock {
let Enemy = SKSpriteNode(imageNamed: "Enemy.png")
Enemy.size.height = (70) //138
Enemy.size.width = (49) //99
Enemy.position = CGPointMake(CGRectGetWidth(self.frame) - 100 , CGRectGetHeight(self.frame) - 100)
Enemy.physicsBody = SKPhysicsBody (rectangleOfSize: Enemy.size)
Enemy.physicsBody!.dynamic = true
Enemy.physicsBody!.allowsRotation = false
Enemy.physicsBody!.friction = 0
Enemy.physicsBody!.restitution = 0
Enemy.physicsBody!.linearDamping = 1
Enemy.physicsBody!.angularDamping = 1
Enemy.name = "Enemy"
Enemy.zPosition = 3
self.addChild(Enemy)
self.EnemyExists=true
}
let sequence = SKAction.sequence([wait, spawn])
self.runAction(SKAction.repeatActionForever(sequence))
更新FUNCの下で:
let Enemy = childNodeWithName("Enemy") as! SKSpriteNode
let Player = childNodeWithName("Player") as! SKSpriteNode
if EnemySpeed == OriginalEnemySpeed {
let impulseVector = CGVector(dx: (Player.position.x - Enemy.position.x)/200, dy: (Player.position.y - Enemy.position.y)/200)
Enemy.physicsBody?.applyImpulse(impulseVector)
}
if Enemy.position.x + Enemy.size.width/4 > size.width {
Enemy.position.x = Enemy.size.width/4
}
else if Enemy.position.x + Enemy.size.width/4 < 0 {
Enemy.position.x = size.width - Enemy.size.width/4
}
if Enemy.position.y + Enemy.size.height/4 > size.height {
Enemy.position.y = Enemy.size.height/4
}
else if Enemy.position.y + Enemy.size.height/4 < 0 {
Enemy.position.y = size.height - Enemy.size.height/4
}
EnemySpeed-=1
if EnemySpeed < 1 {
EnemySpeed = OriginalEnemySpeed
}
あなたはより多くのCGVectorになるために私のenemySpeedを変更する方法について詳しく説明することはできますか?私は敵がプレーヤーを追いかけることを望みます。プレーヤーがさらに進むにつれて速くなる現状ではなく、一定のスピードでプレイしてください。 –