我还是编程的新手,我尝试做以下工作:因此,我将敌人从游戏场景中分离到另一个类中。
在Enemy class.m文件中,我声明了6个方法。每个方法都代表一个新的关卡,它将从游戏场景中调用。
因此,在方法中,我声明了精灵的图像,路径,射击粒子类型等。
这是EnemyClass.m文件中的1级方法的示例:

+(void)enemiesLevel1
{
EnemyName = @"enemy1";
SKSpriteNode* enemy = [SKSpriteNode spriteNodeWithImageNamed:EnemyName];
pathSpeed = 3;
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL);
SKAction *followTrack = [SKAction followPath:path
                                    asOffset:NO
                                orientToPath:YES
                                    duration:pathSpeed];

SKAction *forever = [SKAction repeatActionForever:followTrack];
SKAction *addEnemy = [SKAction runBlock:^{
    [GameScene addChild: enemy];
}];
SKAction *enemySequence = [SKAction sequence:@[addEnemy, forever]];

[GameScene runAction: enemySequence];
}

但是,Xcode指出了两个问题:
No known class method for selector "addChild"


No known class method for selector "runAction"

我从GameScene.m调用方法:
[EnemyClass enemiesLevel1]

这似乎是一个愚蠢的问题,但我仍然是新手,我将不胜感激!

最佳答案

问题是,您应该在GameScene中创建EnemyClasss实例,然后使用它;您的代码应如下所示;

在EnemyClass.m中:

-(void)enemiesLevel1
{
EnemyName = @"enemy1";
SKSpriteNode* enemy = [SKSpriteNode spriteNodeWithImageNamed:EnemyName];
pathSpeed = 3;
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL);
SKAction *followTrack = [SKAction followPath:path
                                    asOffset:NO
                                orientToPath:YES
                                    duration:pathSpeed];

SKAction *forever = [SKAction repeatActionForever:followTrack];
SKAction *addEnemy = [SKAction runBlock:^{
    [self addChild: enemy];
}];

SKAction *enemySequence = [SKAction sequence:@[addEnemy, forever]];

[self runAction: enemySequence];
}

在GameScene.m中:
EnemyClass *enemy= [[EnemyClass alloc] initWithSize:self.size];

然后您可以使用:
[self addChild: [enemy enemiesLevel1]];

关于ios - 在游戏场景中实现我的敌人类(class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24863644/

10-10 20:52