я должен обнаружить столкновение между двумя SKSpriteNode (стены, человек), который является дочерним элементом SKNode фоне. background Узел является дочерним предприятием SKScene gameScene класс. Когда я хочу обнаружить столкновение, используя методОбнаружение столкновений между двумя SKSpriteNode в SpriteKit?
- (void) didBeginContact:(SKPhysicsContact *)contact {
SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else {
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
NSLog(@"contact happened");
}
Но обнаружение столкновения не найдено. Пожалуйста помоги.
Спасибо за ответ. SKPhysicsContactDelegate - несовместимый тип фона. Где мой фон - класс SKNode. self.physicsWorld.contactDelegate = self.prepareBackgroundObj; Здесь он показывает предупреждающее сообщение. – Banshi
Вам нужно установить делегат контакта в зависимости от того, какой объект реализует метод 'didBeginContact', и вам нужно, чтобы объявление класса' @ interface' этого объекта включало протокол ' '. –
godel9
Использование #defines для категорий - плохой выбор, при этом вы теряете проверку типов. Лучше всего создать битовую маску с помощью NS_OPTIONS –