0
MainPlayer是中心的主要球,我希望藍色的敵方節點在每邊隨機產卵,但它們都出現在右上角。我很確定這段代碼是正確的,我無法讓它正常工作。看起來他們是在正確的地方產卵,但由於某種原因,它只是縮小到右上角。在Sprite Kit中,當我產卵節點時,爲什麼它們都出現在屏幕的右上角?
func Enemies() {
let xPos = randomBetweenNumbers(firstNum: 0, secondNum: frame.width)
let Enemy = SKSpriteNode(imageNamed: "Ball")
Enemy.zPosition = -1.0
Enemy.size = CGSize(width: 20.0, height: 20.0)
Enemy.physicsBody?.categoryBitMask = PhysicsCategory.Enemy
Enemy.physicsBody?.contactTestBitMask = PhysicsCategory.Smallball | PhysicsCategory.MainBall
Enemy.physicsBody?.collisionBitMask = PhysicsCategory.Smallball | PhysicsCategory.MainBall
let randomNumber = arc4random() % 4 + 1
switch randomNumber {
case 0:
Enemy.position.x = 0
var positionY = arc4random_uniform(UInt32(frame.size.height))
Enemy.position.y = CGFloat(positionY)
self.addChild(Enemy)
break
case 1:
Enemy.position.y = 0
var positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
self.addChild(Enemy)
break
case 2:
Enemy.position.y = frame.size.height
var positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
self.addChild(Enemy)
break
case 3:
Enemy.position.x = frame.size.width
var positionY = arc4random_uniform(UInt32(frame.size.height))
Enemy.position.y = CGFloat(positionY)
self.addChild(Enemy)
break
default:
break
}
Enemy.position = CGPoint(x: CGFloat(xPos), y: self.frame.size.height/2)
Enemy.physicsBody = SKPhysicsBody(circleOfRadius: 7)
Enemy.physicsBody?.affectedByGravity = false
Enemy.physicsBody?.categoryBitMask = 0
Enemy.physicsBody?.contactTestBitMask = 1
addChild(Enemy)
Enemy.run(SKAction.move(to: MainPlayer.position, duration: 3))
}
這是我的代碼的結果,很明顯,我就讓它產卵,而不是移動到球,因爲我想表現怪異的產卵場所。
的場景的ancorPoint可能是0.5,0.5,這意味着0.0,0.0在場景的中心。所以要從紅球產生左邊的節點,你應該在-scene.size.width/2(不是減號)之間產生節點。 – Whirlwind