CGMutablePathRef или SKShapeNode не в правильном положении - PullRequest
0 голосов
/ 19 сентября 2018

Я создаю визуализацию SpritKit для компонента в своем движке, чтобы помочь с отладкой и позволить мне тестировать функции без полной загрузки графики.

Моя первая цель - убедиться, что я могу связать точкив «симуляции движка» для примитивов SpriteKit.Чтобы добиться этого, я пытаюсь нарисовать простой прямоугольник вокруг экрана.Я думал, что это будет просто, но я столкнулся с самой странной проблемой, это почти как если бы система координат была неправильной.

Итак, чтобы нарисовать прямоугольник (формально песочные часы, просто я делаю следующий код:

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 0, 0);
CGPathAddLineToPoint(path, nil, engineSize.width, 0);
CGPathAddLineToPoint(path, nil, engineSize.width , engineSize.height);
CGPathAddLineToPoint(path, nil, 0, engineSize.height );
CGPathAddLineToPoint(path, nil, 0, 0);
CGPathAddLineToPoint(path, nil, engineSize.width, engineSize.height);
CGPathAddLineToPoint(path, nil, 0, engineSize.height);
CGPathAddLineToPoint(path, nil, engineSize.width,0);
_engineBounds = [SKShapeNode shapeNodeWithPath:path];
_engineBounds.lineWidth = 20;
_engineBounds.strokeColor = UIColor.purpleColor;
_engineBounds.position = CGPointMake(self.view.frame.size.width * -0.5, self.view.frame.size.height * -0.5);
_engineBounds.zPosition = 1;
_engineBounds.fillColor = UIColor.greenColor;
[self addChild:_engineBounds];

Цель состоит в том, чтобы в вызовах CG я мог указывать координаты в терминах системы координат двигателя и правильно отображать их, потому что я перемещаю начало координат с позиции.

Я делаюна этом чертеже и настройте движок в - (void)didMoveToView:(SKView *)view внутри проекта SpriteKit по умолчанию.

Screen scr;
scr.width = self.view.frame.size.width;
scr.height = self.view.frame.size.height;
_testEngine->setScreen(scr);
[self visualizeEngineBounds];

Однако это вызывает следующее enter image description here

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

enter image description here

Уведомлениекак нижний левый угол все еще не в правильном месте. Это почти как если бы система координат немного сместилась. Почему это происходит?

...