问题:ASKShapeNode
有时不会绘制整个路径。如果它在每帧移动一些帧,它就不会绘制。在我的真实案例场景中,我使用了一个非常复杂的 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% 的形状出现故障并且没有完全绘制。这就是我在此处的示例中展示的内容。