1

理解できない問題があります...敵スプライトを上から下に移動したいのですが、敵スプライトが別のクラスにあり、移動できません。

これは、Enemyscene を介して GameScene にスプライトを追加するコードです。これは Enemy.m のコードです。

#import "Enemy.h"
#import "GameScene.h"

@implementation Enemy
@synthesize theGame,newSprite,lastTimeFired,firingSpeed,fireInterval,movementSpeed,launched,hp,maxHp;

-(id)initWithGame:(GameLayer *)game
{
    self=[super init];
    if(self !=nil)
    {
        CGSize size=[[CCDirector sharedDirector]winSize];
        self.theGame=game;
        self.lastTimeFired=0;
        NSLog(@"Enemy INIT ");

        int random=arc4random()%3+1;

        newSprite=[CCSprite spriteWithFile:[NSString stringWithFormat:@"enemy%d.png",random]];
        newSprite.position=ccp(100,200);
        [theGame addChild:newSprite];


        switch (random) 
        {
            case 1:
                movementSpeed=5;
                fireInterval=-1;
                break;
            case 2:
                movementSpeed=10;
                fireInterval=-1;
                break;
            case 3:
                movementSpeed=7;
                fireInterval=-1;
                break;
            case 4:
                movementSpeed=3;
                fireInterval=-1;
                break;
            default:
                movementSpeed=5;
                fireInterval=-1;
                break;
        }


    }
    return self;
}

この Enemy スプライトを GameScene レイヤーに移動したいのですが、コードは GameScene.m です。

#import "GameScene.h"
#import "Hero.h"
#import "Enemy.h"
#define STARTING_LIVES 3;
@implementation GameScene
-(id) init
{
    self =[super init];
    if(self !=nil)
    {
        [self addChild:[GameLayer node]];
    }
    return self;
}

-(void) dealloc
{
        [super dealloc];
}   
@end


@implementation GameLayer
-(id)init
{
    if(self=[super init])
    {

       Hero *hero=[[Hero alloc]initWithGame:self];
        Enemy *e=[[Enemy alloc]initWithGame:self];



        lastTimeEnemyLaunched=0;
        enemyInterval=20;
        lives=3;
        [self schedule:@selector(doThis)];
        NSLog(@"After Schedule");
    }
    return self;
}



-(void)doThis

{
    Enemy *e;

    [e update];

}

@end

私はcocos2dゲーム開発の初心者です...このコードをシミュレーターで実行すると、エラーが発生します

このコードは EXC_BAD_ACCESS を与えます

 -(void) update: (ccTime) dt
    {
        if( elapsed == - 1)
            elapsed = 0;
        else
            elapsed += dt;
        if( elapsed >= interval ) {
            impMethod(target, selector, elapsed);  //this code gives EXC_BAD_ACCESS
            elapsed = 0;
        }
    }

助けてください....ありがとう

4

0 に答える 0