绘制一个圆心形状的子节点,其中心是父中心纹理

时间:2014-03-09 18:49:26

标签: macos sprite-kit

我在绘制子节点(恰好是一个圆圈)时遇到问题,并希望以父节点的中心为中心绘制它。我无法将形状绘制到父纹理区域。我想画圆圈作为角色的视觉范围。

这里以图片为例: sample image

我已经提出了关于节点位置的其他问题,如[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];
}

1 个答案:

答案 0 :(得分:1)

不要在rect中使用绘图,而是尝试绘制圆圈:

CGPathAddArc(path, NULL, circleCenter.x, circleCenter.y, radius, 0, M_PI*2, NO);
CGPathCloseSubpath(path);