HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios7 – SpriteNode不遵循cgpath大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对新游戏精灵有问题……
我的“赛车”在第一圈完美地跟踪了赛道,但从那时起,似乎它在每一圈结束时都会偏离.有人能告诉我我做错了什么吗?

- (void)createSceneContents{
    self.BACkgroundColor = [SKColor blackColor];
    self.scaleMode = SKScenescaleModeAspectFit;

    // CREATinG THE CAR and thE TRACK
    SKSpriteNode *myCar = [self newcar];
    myCar.position = [[self trackShape] position];;
    [self addChild:myCar];

    SKShapeNode *track = [self trackShape];
    track.position = CGPointMake(48,40);
    [self addChild:track];
}



- (SKSpriteNode *)newcar{
    // GENERATES A RECTANGLE FOR THE SPRITE NODE
    SKSpriteNode *hull = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(20,50)];
    CGPathRef pathRef = [[self bPath] CGPath];
    // CAR SHOULD FOLLOW THE TRACK
    // OK ONLY ON THE FIRST LAP
    SKAction *hover = [SKAction sequence:@[[SKAction followPath:pathRef duration:20.0],]];

    hull.physicsBody = [SKPhysicsBody bodyWithRectangLeofSize:hull.size];
    hull.physicsBody.dynamic = NO;
    [hull runAction: [SKAction repeatActionForever:hover]];
    return hull;
}


-(SKShapeNode *)trackShape{
    SKShapeNode *newshape = [[SKShapeNode alloc] init];
    newshape.position = CGPointMake(48,40);
    newshape.path = [[self bPath] CGPath];
    newshape.fillColor = [SKColor clearColor];
    newshape.strokeColor = [SKColor blueColor];
    newshape.lineWidth = 8;
    return newshape;
}

这是路径…它都在同一个班级.

-(UIBezierPath *)bPath{
    UIBezierPath* bezierPath = [UIBezierPath bezierPath];
    [bezierPath moveToPoint: CGPointMake(48,40)];
    [bezierPath addLineToPoint: CGPointMake(10.5,147.5)];
    [bezierPath addCurveToPoint: CGPointMake(131.5,209.5) controlPoint1: CGPointMake(10.5,147.5) controlPoint2: CGPointMake(45.01,253.16)];
    [bezierPath addCurveToPoint: CGPointMake(267.5,209.5) controlPoint1: CGPointMake(217.99,165.84) controlPoint2: CGPointMake(259.57,194.46)];
    [bezierPath addCurveToPoint: CGPointMake(283.5,302.5) controlPoint1: CGPointMake(275.43,224.54) controlPoint2: CGPointMake(325.48,263.29)];
    [bezierPath addCurveToPoint: CGPointMake(105.5,327.5) controlPoint1: CGPointMake(241.52,341.71) controlPoint2: CGPointMake(128.94,352.5)];
    [bezierPath addCurveToPoint: CGPointMake(10.5,396.5) controlPoint1: CGPointMake(82.06,302.5) controlPoint2: CGPointMake(-27.5,333.95)];
    [bezierPath addCurveToPoint: CGPointMake(239.5,448.5) controlPoint1: CGPointMake(48.5,459.05) controlPoint2: CGPointMake(195.5,463.67)];
    [bezierPath addCurveToPoint: CGPointMake(283.5,40.5) controlPoint1: CGPointMake(399.5,40.5) controlPoint2: CGPointMake(375.39,205.99)];
    [bezierPath addCurveToPoint: CGPointMake(153.5,78.5) controlPoint1: CGPointMake(191.61,-124.99) controlPoint2: CGPointMake(153.5,78.5)];
    [bezierPath addLineToPoint: CGPointMake(48,40)];
    [bezierPath closePath];
    return bezierPath;
}

解决方法

过了一会儿,这是我的 results

我废弃了你的汽车方法,并把它全部放在这里.

我不得不调整你的音轨的位置,但它似乎工作.

- (void)createSceneContents{
    self.BACkgroundColor = [SKColor blackColor];
    self.scaleMode = SKScenescaleModeAspectFit;

    SKSpriteNode *hull = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(20,50)];
    CGPathRef pathRef = [[self bPath] CGPath];

    SKShapeNode *track = [self trackShape];
    //track.position = // scrap me.. is set in track shape method
    [self addChild:track];

    hull.physicsBody = [SKPhysicsBody bodyWithRectangLeofSize:hull.size];
    hull.physicsBody.dynamic = NO;
    hull.position = CGPointMake(48,40);
    [self addChild:hull];

    SKAction *hover = [SKAction followPath:pathRef asOffset:NO orientToPath:YES duration:5.0];
    [hull runAction: [SKAction repeatActionForever:hover]];
}

在trackShape方法中,将位置设置为0,0

newshape.position = CGPointMake(0,0);

大佬总结

以上是大佬教程为你收集整理的ios7 – SpriteNode不遵循cgpath全部内容,希望文章能够帮你解决ios7 – SpriteNode不遵循cgpath所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。