我在绘制子节点(恰好是一个圆圈)时遇到问题,并希望以父节点的中心为中心绘制它。我无法将形状绘制到父纹理区域。我想画圆圈作为角色的视觉范围。
这里以图片为例:
我已经提出了关于节点位置的其他问题,如[this],但答案在这里不起作用。我试着让孩子position (0.5, 0.5)
期望在父节点的中心绘制形状。我也使用-parentnode.size.width/2
或-parentnode.size.width
进行了尝试,但也无效。2
以下是绘制圆圈的代码:
+(SKShapeNode *) dibujarCirculo:(NSInteger) radio
{
CGRect box = CGRectMake(0.0f, 0.0f, radio, radio);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, box);
SKShapeNode *circle = [SKShapeNode node];
circle.path = path;
CGPathRelease(path);
circle.alpha = 0.5;
circle.fillColor = [SKColor greenColor];
circle.lineWidth = 0.0f;
return circle;
}
这里是将圆圈分配给父节点的代码:
-(void) dibujarCirculoVision
{
SKShapeNode *vision = [punto dibujarCirculo:krangoDisparoPistola];
vision.zPosition = 1;
vision.name = @"vision";
vision.alpha = 0.3f;
// vision.position = CGPointMake(-cobra.size.width-krangoDisparoPistola, -cobra.size.height-krangoDisparoPistola);
vision.position = CGPointMake(-0.5, -0.5);
[cobra addChild:vision];
}
答案 0 :(得分:1)
不要在rect中使用绘图,而是尝试绘制圆圈:
CGPathAddArc(path, NULL, circleCenter.x, circleCenter.y, radius, 0, M_PI*2, NO);
CGPathCloseSubpath(path);