簡體   English   中英

Swift SpriteKit:應該將節點從父節點移除時

[英]Swift SpriteKit: Node is not removing from parent when it should be

我有一個游戲(例如Doodle Jump),我的玩家擊中了物體並從物體上反彈來前進並獲得積分。 當玩家擊中這些對象時,它們應該消失(.removeFromParent()),因為它們在GameScene中的函數中以及在其自己的單獨類中被調用。 誰能告訴我我做錯了什么?

這是我的GameScene代碼:

 func createSnowAtPosition(position: CGPoint) -> SKNode {
  var sprite: SKSpriteNode!
   sprite = SKSpriteNode(imageNamed: "icons_winter_09")


    let node = Snowflake()
    let position = CGPoint(x: position.x, y: position.y)
    node.position = position
    node.name = "SNOW"

    node.addChild(sprite)
    sprite.physicsBody?.affectedByGravity = false
    sprite.physicsBody?.categoryBitMask = snowCategory
    sprite.physicsBody?.collisionBitMask = playerCategory
    sprite.physicsBody = SKPhysicsBody(circleOfRadius: snow.size.width / 7)
    sprite.physicsBody?.dynamic = false
    return node



}
  func didBeginContact(contact: SKPhysicsContact) {


    if player.physicsBody?.velocity.dy < 0 {
        // 2
        player.physicsBody?.velocity = CGVector(dx: player.physicsBody!.velocity.dx, dy: 250.0)
        // Play sound
        runAction(starSound) {
         snow.removeFromParent()
        }
        if snow.position.y < player.position.y {
            let pointsLabel = childNodeWithName("scoreLabel") as! Points
            pointsLabel.increment()
        }

        }

這是我為單獨的類編寫的代碼:

  import Foundation
   import SpriteKit
 let snow = SKSpriteNode(imageNamed: "icons_winter_09")
    class Snowflake: SKSpriteNode {

init() {
    let size = CGSizeMake(40, 50)
  super.init(texture: nil, color: UIColor.clearColor(), size: size)




   }

  required init?(coder aDecoder: NSCoder) {
     fatalError("init(coder:) has not been implemented")
  }

   func loadBodyWithSize(size: CGSize) {

    snow.physicsBody?.affectedByGravity = false
    snow.physicsBody?.categoryBitMask = snowCategory
    snow.physicsBody?.collisionBitMask = playerCategory
     snow.physicsBody = SKPhysicsBody(circleOfRadius: snow.size.width / 3)

   }

   func createSnowsAtPosition() {
   snow.name = "snow"
    snow.position =  CGPointMake(50, 200)

    snow.physicsBody?.dynamic = false
    snow.physicsBody?.usesPreciseCollisionDetection = true
    addChild(snow)


     }

    }

在開始設置其物理屬性之前,先定義該物理體,也不要在定義該物理體之前添加節點,因此:

let node = Snowflake()
let position = CGPoint(x: position.x, y: position.y)
node.position = position
node.name = "SNOW"l
sprite.physicsBody?.affectedByGravity = false
sprite.physicsBody?.categoryBitMask = snowCategory
sprite.physicsBody?.collisionBitMask = playerCategory
sprite.physicsBody = SKPhysicsBody(circleOfRadius: snow.size.width / 7)
sprite.physicsBody?.dynamic = false
addNode(node)
return node

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM