我必须创建一个CGPathRef来模拟Sprite Kit中的物理属性 .
我试图通过一半的圆形加上一半的椭圆形来创建一个蛋形路径 . 鸡蛋比例为0.4(半圆底部)至0.6(半椭圆形上部);但是,我不知道为什么一无所获 . 以下代码是创建路径:
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];
1 回答
有一种更好的方法可以做到这一点 . 用p.e.制作蛋的质地 . Adobe Illustrator并使用此方法:
SKTexture
是你的蛋形象 . 主体由彩色像素定义 .alphaThresHold
:应该是新物理主体一部分的纹素的最小alpha值 .我认为
Size
很清楚 .分析纹理,忽略蛋周围的所有不可见像素,只将颜色像素解释为
SKPhysicsNode
的主体 . 您不应该使用太多这些,因为它们对于物理引擎的计算非常昂贵 .可以在SpriteKit Class Reference中找到此方法的变体 .