Sono nuovo nella codifica con SpriteKit/Swift e ho il seguente problema: Un personaggio dovrebbe raccogliere monete saltandoci sopra. Non c'è alcun problema nel rilevare la collisione e liberarsi della moneta raccolta, ma il mio personaggio rimbalza della moneta prima che scompaia.Rileva Sprite Collision senza rimbalzare in SpriteKit
Il personaggio dovrebbe volare attraverso la moneta e raccoglierla durante il tragitto.
let playerCategory: UInt32 = 0x1 << 0
let coinCategory: UInt32 = 0x1 << 1
player = SKSpriteNode(texture: playerTexture)
player.physicsBody = SKPhysicsBody(circleOfRadius: player.size.height/2)
player.physicsBody?.dynamic = true
player.physicsBody?.allowsRotation = false
player.physicsBody?.categoryBitMask = playerCategory
player.physicsBody?.contactTestBitMask = coinCategory
var coin:SKSpriteNode = SKSpriteNode(texture: coinTexture)
coin.physicsBody = SKPhysicsBody(circleOfRadius: coin.size.height/2)
coin.physicsBody?.dynamic = false
coin.physicsBody?.allowsRotation = false
coin.physicsBody?.categoryBitMask = coinCategory
coin.physicsBody?.contactTestBitMask = playerCategory
func playerDidCollideWithCoin(player:SKSpriteNode, thisCoin:SKSpriteNode) {
thisCoin.removeFromParent()
coinsCollected++
}
rilevamento delle collisioni funziona bene come questo, ma come ho detto, come posso evitare l'urto di e sostituirlo con un "volo attraverso"?
sto usando Xcode 6 Beta 7
Grazie in anticipo!
Solution nel commento qui sotto;)
Impostare collisionBitMask in modo che non includa la categoria di monete/giocatori. Se non hai bisogno di monete per scontrarsi con qualcosa basta impostarlo su 0. Nota la differenza tra contatto (determinare sovrapposizione) e collisione (ricevere impulso dal contatto). – LearnCocos2D
Trovato! Grazie! Metti la moneta scontroBitMap a 0 e il giocatore collisionBitMap a GroundCategory in modo che il mio giocatore non cada dal terreno. – MikeB