Използвам предоставения тук отговор SKPhysicsBody на SpriteKit с помощен инструмент за полигони, за да създам полигони от физически тела за моите спрайт възли.
Но параметрите на отместване на методите 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);
Ще се промени ли това отместване (ако е необходимо), когато възелът на спрайта се движи по екрана?
Ако опорната точка на родителската сцена е в горния ляв ъгъл, какво трябва да бъде отместването за тези методи?