Проблема заключается в том, что collisionBitMask монеты устанавливается на categoryBitMask игрока. Позвольте мне демистифицировать три переменные столкновений для вас:
x.categoryBitMask: Это способ дать объекту «х» способ идентифицировать его.
x.collisionBitMask: Здесь вы поместите categoryBitMask вар объектов, которые вы хотите «х», чтобы иметь возможность столкнуться с (врезаться)
x.contactTestBitMask: Здесь вы поместите categoryBitMask вар из объект, который вы хотите что-то сделать, когда они вступают в контакт с «x». ContactTestBitMask вызовет предоставленную apple функцию «didBeginContact», и там вы можете закодировать то, что вы хотите, когда говорите, что монета касается игрока.
Некоторый код, чтобы помочь вам положить кусочки вместе:
var coinCategory: UInt32 = 1 // categories must be type UInt32
var playerCategory: UInt32 = 2
var nothingCategory: UInt32 = 3 // some other number for not colliding into anything
coin.name="coin";
coin.physicsBody!.categoryBitMask= coinCategory // set category first
coin.physicsBody?.contactTestBitMask = playerContact
coin.physicsBody!.collisionBitMask = nothingCategory // doesn't crash into anything.
// if you want coins to crash into each other then set their collisionBitMask to the coinCategory
self.addChild(coin)
и:
Finger.physicsBody?.categoryBitMask= playerCategory;
Finger.physicsBody?.collisionBitMask= nothingCategory;
// This next one only needs to be set on one of the objects when you want the "didBeginContact" function to be called when there is contact
//Finger.physicsBody?.contactTestBitMask = coinCategory
удачи!