Spritenode在Xcode-Objective C中使用Sprite Kit错误地放置在World Scene中

时间:2015-07-07 22:56:40

标签: ios sprite-kit skspritenode sknode

我正在使用Sprite Kit在Xcode 6.0中构建平台游戏。我遇到的问题与通过以下方法创建的“怪物精灵节点”有关

-(void) generateMonster {
monster = [SKSpriteNode spriteNodeWithImageNamed:@"monster.png"];
monster.name = @"monster";
monster.size = CGSizeMake(monster.frame.size.width, monster.frame.size.height);
monster.position = CGPointMake(self.currentMonsterX, ground.position.y + monster.frame.size.height);
monster.zPosition = 3.0;
monster.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:monster.size];
monster.physicsBody.categoryBitMask = monsterCategory;

SKAction *moveRight = [SKAction moveByX:30.0 y:0 duration:1.0];
SKAction *moveLeft = [SKAction moveByX:-30.0 y:0 duration:0.5];
SKAction *pulseMovement = [SKAction sequence:@[moveRight, moveLeft]];
[monster runAction:[SKAction repeatActionForever:pulseMovement]];
[self.world addChild:monster];
self.currentMonsterX += (arc4random() % 400) + 100;
}

调试中怪物的位置可以“约50.0”,但是当它放到包含云,星和英雄等所有其他内容的另一个SKNode * World时,monster.position.y得到负值移动到“约-9000”以下!!

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我的坏...... 我在创作的顺序上有一点逻辑错误。这就是我正在做的事情,以防其他人遇到同样的错误。

问题在于代码行:

monster.position = CGPointMake(self.currentMonsterX, ground.position.y + monster.frame.size.height);

正好在“ground.position.y”,因为节点“地面”尚未创建,因此怪物正在下降,因此-9000或更低。

很抱歉。