Ios 改变背景移动速度
在游戏场景中,背景水平移动,效果很好,但我想根据分数的增加缓慢而快速地移动背景,我继续使用nstimeinterval更改,但我看不到背景移动缓慢而快速,这只是正常的,如果这种方式不对,请有人帮助我Ios 改变背景移动速度,ios,objective-c,xcode5,sprite-kit,Ios,Objective C,Xcode5,Sprite Kit,在游戏场景中,背景水平移动,效果很好,但我想根据分数的增加缓慢而快速地移动背景,我继续使用nstimeinterval更改,但我看不到背景移动缓慢而快速,这只是正常的,如果这种方式不对,请有人帮助我 SKTexture *backgroundTexture = [SKTexture textureWithImageNamed:@"background10"]; NSTimeInterval _move; int _gameScore; if (_gameScore
SKTexture *backgroundTexture = [SKTexture textureWithImageNamed:@"background10"];
NSTimeInterval _move;
int _gameScore;
if (_gameScore>=5) {
_move =0.09;
}else{
_move = 0.02;
}
SKAction *movBg = [SKAction moveByX:-backgroundTexture.size.width*2 y:0 duration:_move*backgroundTexture.size.width];
SKAction *resetBg =[SKAction moveByX:backgroundTexture.size.width*2 y:0 duration:0];
SKAction *movebackgroundforever =[SKAction repeatActionForever:[SKAction sequence:@[movBg,resetBg]]];
for (int i= 0; i<2 + self.frame.size.width/(backgroundTexture.size.width*2 ); ++i) {
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
[sprite setScale:1.0];
sprite.zPosition = -20;
sprite.anchorPoint = CGPointZero;
sprite.position = CGPointMake(i* sprite.size.width, 0);
[sprite runAction:movebackgroundforever];
[_bgLayer addChild:sprite];
请尝试以下代码:
它将直接将动画时间乘以带有_move*_\u gameScore的分数,您还可以为_move变量提供一些intalize值
SKTexture *backgroundTexture = [SKTexture textureWithImageNamed:@"background10"];
NSTimeInterval _move;
SKAction *movBg = [SKAction moveByX:-backgroundTexture.size.width*2 y:0 duration:_move*__gameScore];
SKAction *resetBg =[SKAction moveByX:backgroundTexture.size.width*2 y:0 duration:0];
SKAction *movebackgroundforever =[SKAction repeatActionForever:[SKAction sequence:@[movBg,resetBg]]];
for (int i= 0; i<2 + self.frame.size.width/(backgroundTexture.size.width*2 ); ++i) {
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
[sprite setScale:1.0];
sprite.zPosition = -20;
sprite.anchorPoint = CGPointZero;
sprite.position = CGPointMake(i* sprite.size.width, 0);
[sprite runAction:movebackgroundforever];
[_bgLayer addChild:sprite];
我想你需要直接将_gameScore乘以_move,为什么要将backgroundTexture.size.width乘以?你能编辑代码吗?因为它的时间间隔与水平移动的宽度相同,但你要在持续时间参数中传递它,在这里,我们只需要提供动画/动作的持续时间。是的,我通过持续时间参数来移动背景,每次我提供的时间都会乘以宽度。这是不正确的,因为我们需要将背景与NSTimeInterval相乘来移动背景,但如果与_GameScorebackground相乘,则不需要使用Int值