Я работаю с моим сыном над основной игрой, основанной на книге Dive Into SpriteKi Пола Хадсона .
После этой книги мы создали спрайт для космического корабля икосмический мусорный спутник.Это работает, но мы замечаем, что иногда корабль проходит через мусор.Мы попытались добавить спрайты с помощью редактора сцены и включили физику:
Примечательно, что у узла корабля, добавленного с помощью редактора сцены, совершенно неправильный контур физического телагенерируется, но выполнение
player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)
действительно исправляет это.С другой стороны, выполнение одного и того же спрайта для мусорного спутника всегда приводит к одному и тому же извилистому физическому телу.
Мое единственное предположение - что-то не так с тем, как (или когда) текстура загружается и анализируется.Это объяснило бы, почему это неоднократно исправляет ракетный корабль ... но что не так со спутником?И как убедиться, что текстура правильно подготовлена, чтобы альфа-маска для тела работала надежно?
Буду признателен за любые советы о том, как справиться с этой проблемой (-ами).
Я пыталсяиспользовать alphaThreshold:
, и это имеет некоторое значение для контура корабля, но, похоже, не влияет на контур спутника.
Я попытался перерисовать текстуру спутника с нуля, чтобы исключить проблему сОригинальный файл из книги.С совершенно новым файлом аналогичной формы проблема точно такая же.
Мы также протестировали iOS 12 и iOS 13 с теми же результатами.«Канонический» код из книги имеет точно такую же проблему.
Пожалуйста, смотрите нашу игру полная реализация на GitHub .
Быстрый способ воспроизвести проблему из нашей игры:
- Создать новый проект в Xcode с шаблоном игры
- Добавить спутниковый ресурс в каталог ресурсов:
Добавьте Color Sprite в GameScene.sks, выберите спутник для текстуры и установите тип тела "Альфа-маска" в разделе определения физики.
Результат в нашем случае выглядит следующим образом:
Ожидаемый результат - точное описание спрайта.