Jeśli chcesz zamaskować dowolny SKNode/SKSpriteNode z efektem anti-aliasing - można użyć SKEffectNode zamiast SKCropNode. Działa również z animowanymi węzłami. Oto przykład:
// Set up your node
SKNode *nodeToMask = [SKNode node];
// ...
// Set up the mask node
SKEffectNode *maskNode = [SKEffectNode node];
// Create a filter
CIImage *maskImage = [[CIImage alloc] initWithCGImage:[UIImage imageNamed:@"your_mask_image"].CGImage];
CIFilter *maskFilter = [CIFilter filterWithName:@"CISourceInCompositing"
keysAndValues:@"inputBackgroundImage", maskImage, nil];
// Set the filter
maskNode.filter = maskFilter;
// Add childs
[maskNode addChild:nodeToMask];
[scene addChild:maskNode];
Czy możesz udostępnić kod, którego użyłeś do uzyskania maski? – ZeMoon
jest wyświetlany w pikselach tylko na symulatorze lub urządzeniu? –
Według specyfikacji, z pewnością będzie miał postrzępione krawędzie, ponieważ SKCropNode używa wartości boolowskiej (0 lub 1), a nie bajtu (np. 0 do 255). –