这是我的代码,用于从左向右移动的星星,我在在线教程中使用了它:

    SKTexture* starsTexture = [SKTexture textureWithImageNamed:@"stars"];
    starsTexture.filteringMode = SKTextureFilteringNearest;

    SKAction* movestarsSprite = [SKAction moveByX:-starsTexture.size.width*2 y:0 duration:0.02 * starsTexture.size.width*2];
    SKAction* resetstarsSprite = [SKAction moveByX:starsTexture.size.width*2 y:0 duration:0];
    SKAction* movestarsSpritesForever = [SKAction repeatActionForever:[SKAction sequence:@[movestarsSprite, resetstarsSprite]]];

    for( int i = 0; i < 2 + self.frame.size.width / ( starsTexture.size.width * 2 ); ++i ) {
        SKSpriteNode* starsSprite = [SKSpriteNode spriteNodeWithTexture:starsTexture];
        [starsSprite setScale:2.0];
        starsSprite.position = CGPointMake(i * starsSprite.size.width, starsSprite.size.height / 2);
          [starsSprite runAction:movestarsSpritesForever];
        [self addChild:starsSprite];


我是编码的初学者,现在星星重复出现在屏幕底部,我希望它们像星星一样出现在屏幕顶部。为了实现该目标,我应该改变什么?请帮忙!

最佳答案

SpriteKit中的坐标系在屏幕左下角有0,0,因此您需要增加节点位置的y坐标以将其移至更高位置。

您目前将它们设置为:

starsSprite.position = CGPointMake(i * starsSprite.size.width, starsSprite.size.height / 2);

尝试:

starsSprite.position = CGPointMake(i * starsSprite.size.width, self.size.height - starsSprite.size.height / 2);

07-26 09:38