Я пытаюсь точно определить точку, в которой узел, движущийся со скоростью, попадает в самый край экрана. В данный момент позиция узла регистрируется позже, за краем экрана (и тем более при движении быстрее) при проверке, находится ли его положение от >=
до self.frame.maxX
(использование ==
вообще не регистрируется).
Изначально попробовав использовать битовые маски, примененные к спрайту, и тело физики границ, выступающее в качестве стены, - и столкнулось
хорошо известно
проблемы с обнаружением столкновений в SpriteKit - я решил выбрать функцию обновления по умолчанию, где вместо этого я проверяю положение x.
Однако оба подхода кажутся проблематичными. Из того, что я прочитал, update
называется максимум 60 раз в секунду, поэтому между кадрами позиция узла регистрируется позже.
По той же причине, я полагаю, обнаружение столкновений с использованием didBegin
страдает той же проблемой, и даже когда физическое тело имеет свой collisionBitMask
, не установленный в ноль, то есть даже когда узел отскакивает от него.
И проверка положения в пользовательской функции, вызываемой таймером с интервалом времени, скажем, 0,00001, также не точна.
В нынешнем виде нет приемлемой реализации - как я могу точно проверить положение?