gpt4 book ai didi

ios - 移动背景在 Spritekit 上停止重复

转载 作者:行者123 更新时间:2023-11-29 03:13:26 25 4
gpt4 key购买 nike

这是让我的背景重复的代码,只有一个背景,它应该永远重复:

SKTexture* bgTexture = [SKTexture textureWithImageNamed:@"nightbackground"];
bgTexture.filteringMode = SKTextureFilteringNearest;

SKAction* movebgSprite = [SKAction moveByX:-bgTexture.size.width*2 y:0 duration:0.1 * bgTexture.size.width*2];
SKAction* resetbgSprite = [SKAction moveByX:bgTexture.size.width*2 y:0 duration:0];
SKAction* movebgSpritesForever = [SKAction repeatActionForever:[SKAction sequence:@[movebgSprite, resetbgSprite]]];

for( int i = 0; i < 2 + self.frame.size.width / ( bgTexture.size.width * 2 ); ++i ) {
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:bgTexture];
[sprite setScale:1.0];
sprite.zPosition = -20;
sprite.position = CGPointMake(self.size.width/2, self.size.height/2);
[sprite runAction:movebgSpritesForever];
[self addChild:sprite];

但它不会永远重复,一段时间后就会停止。可能有什么问题吗?

最佳答案

这种情况将在横向方向上工作,并使 View 向左(-x 方向)无限重复滚动。您创建背景 SKSPriteNode 的两个实例并将它们并排放置。当第一个完全滚出屏幕左侧时,它被放置在第二个背景 Sprite 节点的右侧。

在 didMoveToView 中:

for (int i = 0; i < 2; i++) {
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
bg.anchorPoint = CGPointZero;
bg.position = CGPointMake(i * bg.size.width, 0);
bg.name = @"starBackground";
[self addChild:bg];
}

在更新中:循环

[self enumerateChildNodesWithName:@"background" usingBlock:^(SKNode *node, BOOL *stop) {

SKSpriteNode *bg = (SKSpriteNode *)node;
bg.position = CGPointMake(bg.position.x - 1.5, bg.position.y);

if (bg.position.x <= -bg.size.width) {
bg.position = CGPointMake(bg.position.x + bg.size.width * 2, bg.position.y);
}

}];

关于ios - 移动背景在 Spritekit 上停止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971197/

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