gpt4 book ai didi

ios - 如何使用 CGPathRef 创建蛋形物理体?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:35 32 4
gpt4 key购买 nike

egg path

我必须创建一个 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];

最佳答案

有更好的方法来做到这一点。用 p.e. 制作鸡蛋的质地。 Adobe Illustrator 并使用此方法:

init(texture texture: SKTexture!,alphaThreshold alphaThreshold: CFloat,size size: CGSize) -> SKPhysicsBody
  1. SKTexture 是您的蛋图像。主体由彩色像素定义。
  2. alphaThresHold:应该成为新物理体一部分的纹素的最小 alpha 值。
  3. 我认为 Size 很清楚。

分析纹理并忽略鸡蛋周围的所有不可见像素,只有颜色像素被解释为 SKPhysicsNode 的主体。您不应该使用太多这些,因为它们对于物理引擎的计算非常昂贵。

此方法的变体可在 SpriteKit Class Reference 中找到.

关于ios - 如何使用 CGPathRef 创建蛋形物理体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599378/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com