Я хочу удалить все объекты из экрана. На данный момент я использую обнаружение контакта с «барьерами».Определите, когда SpriteNode покидает экран?
Я инициализирую барьеры вокруг экрана и когда SpriteNode находится в контакте с одним из них, он удаляется из сцены. Но этот метод работает не очень хорошо и разбивает мою игру.
Знаете ли вы, есть ли простой способ удалить все объекты из экрана?
Вот мой код с барьерами:
// declarations
var barrierLeft:SKSpriteNode = SKSpriteNode()
var barrierRight:SKSpriteNode = SKSpriteNode()
var barrierTop:SKSpriteNode = SKSpriteNode()
// In didMoveToView method
barrierLeft.size = CGSizeMake(1, self.frame.height*2)
barrierLeft.physicsBody = SKPhysicsBody (rectangleOfSize: barrierLeft.size)
barrierRight.position = CGPointMake(0, 0)
barrierLeft.physicsBody?.dynamic = false
barrierLeft.physicsBody?.categoryBitMask = barrierCategory
barrierLeft.physicsBody?.contactTestBitMask = flechetteCategory
addChild(barrierLeft)
barrierRight.size = CGSizeMake(1, self.frame.height*2)
barrierRight.physicsBody = SKPhysicsBody (rectangleOfSize: barrierLeft.size)
barrierRight.position = CGPointMake(self.size.width+10, 0)
barrierRight.physicsBody?.dynamic = false
barrierRight.physicsBody?.categoryBitMask = barrierCategory
barrierRight.physicsBody?.contactTestBitMask = flechetteCategory
addChild(barrierRight)
//
func didBeginContact(contact: SKPhysicsContact!)
{
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else
{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if ((firstBody.categoryBitMask & flechetteCategory) != 0 && (secondBody.categoryBitMask & barrierCategory) != 0)
{
flecheDidCollideWithbarrier(firstBody.node as SKSpriteNode, barrier: secondBody.node as SKSpriteNode)
}
//
func flecheDidCollideWithbarrier (fleche: SKSpriteNode, barrier: SKSpriteNode)
{
println("barrière")
counterGainTime = 0
fleche.removeFromParent()
}
Спасибо за вашу помощь!
У меня проблема с вашим решением. – Haox
В чем проблема? – 0x141E
У меня проблема. Мое обновление функции уже используется для функции интервалов. Когда я добавляю ваш метод в func update, узел не удаляется. И когда каждый узел убирает экран, он добавляет +1 к моему счету. Мой счет рассчитывается на каждом контакте между двумя телами. Я не могу понять связь между вашим методом и моим счетом. Кроме того, я редактирую ваш метод вне обновления func следующим образом: if (node.position.x <0 || node.position.x> self. Size.width) || node.position.y <0 || node.position.y> self.size.height) {node.removeFromParent()} метод работает, но не все время. Вы можете мне помочь? – Haox