如何使用CGPathRef来对象

时间:2013-10-23 21:33:20

标签: ios core-graphics sprite-kit

在我的iOS游戏中,我试图沿路径移动一个对象(见下文):

enter image description here

我想将三角形​​上方的三角形移动到框的底部。

但我不知道如何很好地使用CGPathRefs。这是我正在尝试的:

CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, 20, 0, 20, 0, M_PI/2, NO);
SKAction *moveTriangle = [SKAction followPath:path asOffset:YES orientToPath:YES duration:1.0];
[self.triangle runAction:moveTriangle];

我一直得到奇怪的结果。任何人都可以帮我调整我的路径以匹配上面的图像吗?谢谢!

1 个答案:

答案 0 :(得分:2)

使用原型的想法

     // will arc around this sprite for demo
    SKSpriteNode *boxOrange = [SKSpriteNode spriteNodeWithColor:[UIColor orangeColor] size:CGSizeMake(30, 30)];
    boxOrange.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    [self addChild:boxOrange];

    SKSpriteNode *heroSprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(70, 70)];
    CGFloat offeset = 150; // change as required, ie bring hero closer to rotn point
    heroSprite.position = CGPointMake(-offeset, heroSprite.position.y);
    SKSpriteNode *guideContainer = [SKSpriteNode spriteNodeWithColor:[SKColor purpleColor] size:CGSizeMake(3, 3)];
    // for full effect - change guide container to clearColor
    // otherwise good for seeing where rotation point will occur
    [guideContainer addChild:heroSprite];

    [self addChild:guideContainer];
    guideContainer.position = boxOrange.position;

    [guideContainer runAction:[SKAction rotateToAngle:1.57 duration:3.0 shortestUnitArc:YES]];
    // just found shortestUnitArc action .. this will be handy for at times