Надеюсь, вы все сможете с этим справиться. Я работаю над приложением настольной игры. У меня есть шестигранные плитки, которые называются случайным образом и выложены в начале игры. Каждая из этих плиток имеет четыре стороны со значением 1, а две другие стороны имеют значения 2 и 3.Как обнаружить пересекающиеся узлы детей других SKSpriteNodes
Каждая плитка представляет собой SKSpriteNode с прозрачным прямоугольником Узлы по краям. Существует 5 различных типов плиток, и они должны быть отдельными Sprites с дочерними узлами, поскольку в дополнение к случайному расположению они также случайным образом вращаются. Поэтому мне нужно знать программно, какие края плитки касаются тех краев других плиток.
Как это:
https://app.box.com/s/nnym97st3xmrsx979zchowdq1qwsmpoo
(я попытался отправить изображение того, что я пытаюсь выполнить, но, видимо, у меня нет достаточно высокого рейтинга.); -)
Например: если «2» трогает «3» и т.д.
Я первый попробовал обнаружение столкновений, но, конечно, работает только с динамическими, движущихся объектов.
Я попробовал инструкцию IF, чтобы сравнить, касались ли другие узлы, а затем вспомнил, что координаты, которые относятся к родительскому узлу, так что это не сработало.
Я тогда попытался intersectsNode, но, похоже, работает только с узлами под одним и тем же родителем. В настоящее время я работаю с convertPoint, чтобы получить координаты в соответствии с сценой и, таким образом, быть сопоставимыми. Но я не могу заставить его работать так, как мне нужно.
Должно быть что-то простое, чего я не вижу. Есть идеи?
Интересно. Я попробовал что-то подобное, если дочерние узлы двигались всего лишь на несколько пикселей при загрузке, но это не дало никаких результатов. Узлы были бы перекрыты при первоначальном размещении, может ли это предотвратить обнаружение столкновения? Если это так, я мог бы отрегулировать его, адаптировав свой метод выше и просто выбрав дочерние узлы из центра шестнадцатеричного элемента во внешние края. Это может быть проще, чем переместить все гексы. Большое спасибо! Я дам это испытание утром. ;-) – Freedlun
@Freedlun - Перемещение гексов не так уж сложно. Если вы знаете конечные позиции каждого из них, вы можете использовать SKAction moveTo x, y по длительности. Гексы, идущие вместе, могут даже придать вашей игре прохладную анимацию запуска. – sangony
Правда. На самом деле это именно то, что я сделал, хотя я сделал это с childern.Использование SKActions Я перемещаю спрайты Edge из (0, 0) в их местоположения, и он отлично работает! Обнаружен контакт. Теперь я могу перейти к другим аспектам игры. Спасибо! – Freedlun