sprite-kit

What would be the best approach for outlining or dropshadowing a font?


I'm not finding any support for dropshadow or outline of a font in Sprite Kit. For the dropshadow, I'm guessing I could create a second SKLabelNode and offset it behind the other.

Is there some way that I could utilize a SKEffectNode for the outline or dropshadow ? Possibly make the SKLabelNode a child of the SKEffectNode ?

update :

I was able to get a decent dropshadow using a second SKLabelNode behind the first, that is black and offset. Still interested in other potential options, but that seems to work well.


Solution

  • This is most likely what you are doing, but it works and is simple.

    - (SKLabelNode *) makeDropShadowString:(NSString *) myString
    {
        int offSetX = 3;
        int offSetY = 3;
    
        SKLabelNode *completedString = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
        completedString.fontSize = 30.0f;
        completedString.fontColor = [SKColor yellowColor];
        completedString.text = myString;
    
    
        SKLabelNode *dropShadow = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
        dropShadow.fontSize = 30.0f;
        dropShadow.fontColor = [SKColor blackColor];
        dropShadow.text = myString;
        dropShadow.zPosition = completedString.zPosition - 1;
        dropShadow.position = CGPointMake(dropShadow.position.x - offSetX, dropShadow.position.y - offSetY);
    
        [completedString addChild:dropShadow];
    
        return completedString;
    }
    

    Will try and make outline one as well... but I have a feeling it'll be more tricky... there must be a way to use bitmap fonts .. ??? bmGlyph ...