gpt4 book ai didi

ios7 - SpriteNode 不遵循 cgpath

转载 作者:行者123 更新时间:2023-12-05 01:07:01 25 4
gpt4 key购买 nike

我的新游戏 Sprite 有问题...
我的“汽车”在第一圈完美地沿着赛道行驶,但从那时起,它似乎在每圈结束时都会发生偏移。有人能告诉我我做错了什么吗?

- (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

enter image description here

我报废了你的汽车方法,把它全部放在这个里面。

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

- (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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215223/

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