精灵在错误的位置生成

Posted

技术标签:

【中文标题】精灵在错误的位置生成【英文标题】:Sprites spawning in incorrect position 【发布时间】:2015-01-30 23:04:30 【问题描述】:

我有一排 5 个精灵,它们每 4 秒生成一次,并沿 Y 轴向下移动。精灵每次都生成正确的数量,我有 5 个精灵在屏幕上等距间隔,它们都完美地居中。

但是,当调用 performSelector 操作时,当它生成它们时,它们并没有转到正确的位置。到目前为止,我只能在屏幕左侧看到半个精灵。经过测试,它们似乎都在错误的位置堆叠在一起。

知道发生了什么吗?我会很感激任何帮助。这是我在场景中使用的所有代码。

-(void) addBricks:(CGSize)size 
for (int i = 0; i < 5; i++) 
    //create brick sprite from image
    SKSpriteNode *brick = [SKSpriteNode spriteNodeWithImageNamed:@"brick"];
    //resize bricks
    brick.size = CGSizeMake(60, 30);
    //psoition bricks
    int xPos = size.width/7.5 * (i+.5);
    int yPos = 450;
    brick.position = CGPointMake(xPos, yPos);

    //add move action
    SKAction *wait = [SKAction waitForDuration:3];
    SKAction *move = [SKAction moveByX:0 y:-36.9 duration:1];
    SKAction *sequence = [SKAction sequence:@[wait, move]];
    SKAction *repeatMove = [SKAction repeatActionForever:sequence];


    [brick runAction:repeatMove];
    [self addChild:brick];




-(id)initWithSize:(CGSize)size 
if (self = [super initWithSize:size]) 
    self.backgroundColor = [SKColor colorWithRed:(243.0f/255) green:(228.0f/255) blue:(165.0f/255) alpha:1.0];

    //add action to spawn bricks
    SKAction *spawn = [SKAction performSelector:@selector(addBricks:) onTarget:(self)];
    SKAction *delay = [SKAction waitForDuration:4];
    SKAction *delayThenSpawn = [SKAction sequence:@[delay, spawn]];

    [self runAction:[SKAction repeatActionForever:delayThenSpawn]];

    [self addBricks:size];



return self;

【问题讨论】:

我很好奇将什么值传递给 addBricks: 对于 CGSize 参数。 【参考方案1】:

正如您在上一个问题中提到的 LearnCocos2D.. 在将参数传递给方法时,您不能使用选择器。

addBricks 期望 size .. 你没有将大小传递给它。

将你的生成动作更改为

SKAction *spawn = [SKAction runBlock:^
    // make this whatever size you want, i'm just using the scene's size
    [self addBricks:self.size];
];

这应该让你开始

【讨论】:

以上是关于精灵在错误的位置生成的主要内容,如果未能解决你的问题,请参考以下文章

Cocos2d,在竖直放置时使用加速度计在具有 x 轴的横向错误中移动精灵

错误精灵错误跟踪器错误

画布精灵表错误

任何想法为啥我在添加声音时在精灵套件中收到此错误?

快速创建具有相同纹理的多个精灵(节点)

nodeAtPoint 错误的节点