2017-02-04 34 views
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)) 
    } 

這是我的代碼的結果,很明顯,我就讓它產卵,而不是移動到球,因爲我想表現怪異的產卵場所。

enter image description here

+0

的場景的ancorPoint可能是0.5,0.5,這意味着0.0,0.0在場景的中心。所以要從紅球產生左邊的節點,你應該在-scene.size.width/2(不是減號)之間產生節點。 – Whirlwind

回答

0

試試這個:

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 

    Enemy.physicsBody?.affectedByGravity = false 
    Enemy.physicsBody?.isDynamic = true 

除了Enemy.run(SKAction.move(to: MainPlayer.position, duration: 3)) 突破後刪除代碼同時,嘗試去除+1 arc4random後

相關問題