¿Cómo crear un cuerpo de forma de huevo con CGPathRef?

ruta del huevo

Tengo que crear un CGPathRef para simular la propiedad física en Sprite Kit.

Estoy tratando de crear un path de forma de huevo por medio círculo más mitad de óvalo. la proporción del huevo es 0.4 (parte inferior del medio círculo) a 0.6 (parte superior de la mitad del óvalo); Sin embargo, no sé por qué no pasa nada. El siguiente código es la creación de la ruta:

self.egg = [SKSpriteNode spriteNodeWithImageNamed:IMAGE_NAME_EGG]; [self.egg setScale:0.2]; self.egg.position = CGPointMake(self.size.width/2,self.size.height - self.egg.size.height/2); self.egg.name = IMAGE_NAME_EGG; CGMutablePathRef path = CGPathCreateMutable(); CGPathAddArc(path, NULL, 0, self.egg.size.height*0.4, self.egg.size.width/2, M_PI, M_PI_2, NO); CGPathAddEllipseInRect(path, NULL, self.egg.frame); self.egg.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromPath:path]; self.egg.physicsBody.dynamic = YES; self.egg.physicsBody.categoryBitMask = eggCategory; self.egg.physicsBody.contactTestBitMask = floorCategory; self.egg.physicsBody.collisionBitMask = floorCategory; //self.eggCanMove = NO; self.egg.physicsBody.allowsRotation = YES; [self addChild:self.egg]; 

Hay una mejor manera de hacer esto. Haga una textura de su huevo con Adobe Illustrator y use este método:

 init(texture texture: SKTexture!,alphaThreshold alphaThreshold: CFloat,size size: CGSize) -> SKPhysicsBody 
  1. La SKTexture es tu image de huevo. El cuerpo está definido por los píxeles de color.
  2. The alphaThresHold : el valor alfa mínimo para texels que debería ser parte del nuevo cuerpo de física.
  3. El Size es claro, creo.

La textura se analiza y se ignoran todos los píxeles invisibles alnetworkingedor del huevo y solo los píxeles de color se interpretan como el cuerpo del SKPhysicsNode . No debe usar demasiados de estos porque son muy costosos de calcular para Physics Engine.

Las variaciones de este método se encuentran en la reference de class de SpriteKit .