理解できない問題があります...敵スプライトを上から下に移動したいのですが、敵スプライトが別のクラスにあり、移動できません。
これは、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;
}
}
助けてください....ありがとう