Как сделать так, чтобы два одинаковых узла spritekit игнорировали столкновения

#ios #xcode #sprite-kit #collision-detection

#iOS #xcode #sprite-kit #обнаружение столкновений

Вопрос:

Я хочу, чтобы два узла одного и того же типа объекта игнорировали друг друга без столкновения. Согласно документации Apple,

«Маска столкновения этого тела сравнивается с маской категории другого тела путем выполнения логической операции И. Если результатом является ненулевое значение, то на это тело влияет коллизия.»

Итак, я установил

 ball.physics.categoryBitMask = 0x00000000;
ball.physics.collisionBitMask = 0x00000000;
  

Это приведет к нулевому результату логики и операции, но по какой-то причине они все еще сталкиваются друг с другом.

Как вы заставляете их проходить друг через друга?

Ответ №1:

Вы настраиваете шар на столкновение с самим собой. Установить:

 static const uint32_t ballCategory        =  0x1 << 1;
  

Измените свои битовые маски:

 ball.physics.categoryBitMask = ballCategory;
ball.physics.collisionBitMask = 0;
  

Ответ №2:

Не устанавливайте маску категории равной 0 .

Комментарии:

1. Возможно, что-то не так с объявлением маски категории ur. Попробуйте установить static const uint32_t ballCategory = 0x1 << 1; непосредственно перед @implementation UrClass: и затем установите categorybitmask в ballCategory