我正在尝试使用具有相同持续时间的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个彼此设定距离的平台,当精灵图像组合在一起时,它会产生单个宽平台的错觉。然而,当运行动作时,幻觉就会中断。任何信息将不胜感激。
答案 0 :(得分:0)
您可以尝试替换以下内容中的moveTo:
:
SKAction *moveLeft = [SKAction moveTo:CGPointMake(-100 , beginningPlatform.position.y) duration:9];
带有moveBy:
变量的。目前,不同的平台从不同的位置开始以产生连续平台的错觉,但是通过将它们全部移动到相同的位置,它们将不会保持其原始位置间隔。