在不改变速度的情况下以一定的持续时间移动节点的可能方法?

时间:2014-08-01 17:41:48

标签: ios objective-c sprite-kit sprite skaction

我正在尝试使用具有相同持续时间的SKAction将节点移动到设定的X距离。节点处于不同的X位置,因此节点移动的速度不同,有没有办法使速度相同而不影响节点的定位?

实施例

-(void)beginningGamePlatforms {

SKSpriteNode *beginningPlatform = [SKSpriteNode spriteNodeWithImageNamed:@"PlatformBeginning"];
beginningPlatform.zPosition = 2;
beginningPlatform.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:beginningPlatform.size];
beginningPlatform.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
beginningPlatform.position = CGPointMake(beginningPlatform.position.x - 20, beginningPlatform.position.y - 129);
beginningPlatform.physicsBody.dynamic = NO;

SKSpriteNode *platformSpawn1 = [SKSpriteNode spriteNodeWithImageNamed:@"platformSpawn1"];
platformSpawn1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platformSpawn1.size];
platformSpawn1.position = CGPointMake(beginningPlatform.position.x, CGRectGetMidY(self.frame));
platformSpawn1.position = CGPointMake(platformSpawn1.position.x + 196, platformSpawn1.position.y - 129);
platformSpawn1.physicsBody.dynamic = NO;

SKSpriteNode *platformSpawn2 = [SKSpriteNode spriteNodeWithImageNamed:@"platformSpawn1"];
platformSpawn2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platformSpawn2.size];
platformSpawn2.position = CGPointMake(platformSpawn1.position.x,CGRectGetMidY(self.frame));
platformSpawn2.position = CGPointMake(platformSpawn2.position.x + 196, platformSpawn2.position.y - 129);
platformSpawn2.physicsBody.dynamic = NO;

SKAction *moveLeft = [SKAction moveTo:CGPointMake(-100 , beginningPlatform.position.y) duration:9];
SKAction *removeFromParent = [SKAction removeFromParent];

SKAction *AllTwo = [SKAction sequence:@[moveLeft,removeFromParent]];

[self addChild:beginningPlatform];

[self addChild:platformSpawn1];

[self addChild:platformSpawn2];

[beginningPlatform runAction:AllTwo];

[platformSpawn1 runAction:AllTwo];

[platformSpawn2 runAction:AllTwo];

}

在我的代码中,我创建了3个彼此设定距离的平台,当精灵图像组合在一起时,它会产生单个宽平台的错觉。然而,当运行动作时,幻觉就会中断。任何信息将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试替换以下内容中的moveTo:

SKAction *moveLeft = [SKAction moveTo:CGPointMake(-100 , beginningPlatform.position.y) duration:9];
带有moveBy:变量的

。目前,不同的平台从不同的位置开始以产生连续平台的错觉,但是通过将它们全部移动到相同的位置,它们将不会保持其原始位置间隔。