Я использую приведенный здесь ответ SpriteKit SKPhysicsBody с помощью вспомогательного инструмента многоугольника для создания полигоны физических тел для моих узлов спрайта.
Но параметры смещения методов CGPathMoveToPoint/CGPathAddLinetoPoint сбивают с толку (я также не могу найти ссылку в документе Apple).
В коде, сгенерированном скриптом, offsetX и offsetY определены как:
CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x;
CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y;
В то время как в GIF, представленном там для демонстрации, это:
CGFloat offsetX = sprite.frame.size.width/2;
CGFloat offsetY = sprite.frame.size.height/2;
Оба эти смещения используются для исправления параметров в методах CGPathMoveToPoint/CGPathAddLinetoPoint, таких как:
CGPathMoveToPoint(path, NULL, 0 - offsetX, 0 - offsetY); (for the bottom left corner of the texture)
CGPathAddLineToPoint(path, NULL, 11 - offsetX, 0 - offsetY);
Зачем нам это смещение?
Для нижнего левого угла текстуры, почему я не могу указать только (0,0), например:
CGPathMoveToPoint(путь, NULL, 0, 0);
Будет ли это смещение (если необходимо) меняться, когда узел спрайта перемещается по экрану?
Если точка привязки родительской сцены находится в верхнем левом углу, какое должно быть смещение для этих методов?