Проблема: SKShapeNode
иногда не отображает весь путь. Если он перемещает каждый кадр, некоторые кадры он не рисует. В моем реальном сценарии я использую очень сложную 10-стороннюю форму, но для этой демонстрации я просто делаю треугольник. Например, см. скриншоты (http://imgur.com/a/50mHA).
Код: посмотрите на это в действии, добавив его в базовый шаблон или любую сцену и перемещая мышь (палец) вокруг. Некоторые фигуры показывают этот сбой больше, чем другие, но если вы достаточно подвигаетесь, вы увидите это на каждой фигуре.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint location = [[touches anyObject] locationInNode:self];
[self enumerateChildNodesWithName:@"path" usingBlock:^(SKNode *node, BOOL *stop) {
[node removeFromParent];
}];
CGMutablePathRef p = CGPathCreateMutable();
CGPathMoveToPoint(p, NULL, location.x-80, location.y-130);
CGPathAddLineToPoint(p, NULL, location.x+80, location.y);
CGPathAddLineToPoint(p, NULL, location.x-80, location.y+130);
CGPathCloseSubpath(p);
SKShapeNode *shape = [SKShapeNode node];
shape.name = @"path";
shape.path = p;
shape.fillColor = [UIColor redColor];
[self addChild:shape];
}
Есть идеи, что происходит?
Редактировать: я хотел добавить, что общий эффект, которого я пытаюсь добиться, — это динамическое освещение в сцене с физическими телами и игроком (источником света). Я использовал информацию с http://ncase.me/sight-and-light/. для создания многоугольника. Однако, когда игрок проходит уровень, в 99% случаев он работает нормально, за исключением того 1%, когда форма дает сбои и не прорисовывается полностью. Это то, что я показываю в примере здесь.