ios - 将我的敌人类实现到游戏场景

标签 ios objective-c class sprite-kit

我对编程还很陌生,我尝试做的是:所以我将我的敌人从我的游戏场景中分离到不同的类。 在 Enemy class.m 文件中,我声明了 6 个方法。每个方法都代表一个新关卡,将从游戏场景中调用。 所以在方法中我声明了 Sprite 的图像、路径、射击粒子类型等。 下面是 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 - 将我的敌人类实现到游戏场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24863644/

相关文章:

iphone - iPhone SDK 中的文本域输入验证

ios - 在 TTTAttributedLabel 中,两种不同的文本颜色不起作用

ios - 解析 : Cannot sign up a user created automatically

objective-c - 警告 : Unimplemented Selector localizedCaseInsensitiveCompare

来自 for 循环的 Python 类

python - 调用构造函数时在python中解析多级和多级继承的方法顺序

ios - 使用存在于另一个函数中的 prepareForSegue 传递变量

objective-c - 使用 AVFoundation 调整输入音量(在 AVCaptureSession 中)

c++ - 一个类(class)可以有两个公共(public)部分吗?如果是,那为什么?我们在什么情况下这样做?

ios - 在 ViewDidLoad 中执行 Segue