2015-03-31 4 views
0

Я использую предоставленный здесь ответ SpriteKit's SKPhysicsBody with polygon helper tool для создания полигонов физических тел для моих узлов-спрайтов.Параметры метода CGPathMoveToPoint/CGPathAddLineToPoint запутывают

Но смещение параметров методов 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); 
  1. Зачем нам это смещение?

  2. Для левого нижнего угла текстуры, почему я не могу представить только (0,0), как:

    CGPathMoveToPoint (путь, NULL, 0, 0);

  3. Будет ли это смещение (при необходимости) изменяться, когда узел спрайта перемещается по экрану?

  4. Если опорная точка родительской сцены находится в верхнем левом углу, что должно быть смещением для этих методов?

ответ

0

Переменная смещения, на которую вы ссылаетесь, является только отправной точкой. Вы можете так же легко заменить переменные фиксированной стартовой координатой, как 0,0.

Ваш вопрос касается физического тела, поэтому опорные точки в этом случае не применяются. Координаты физического тела 0,0 всегда сосредоточены по отношению к ширине и высоте узла. Таким образом, изменяя точку привязки для узла эффектов, как центрируется его координата, он не оказывает никакое влияния на организме физики.