我正在製作一個有敵人拍攝東西的cocos2d應用程序。很多時候,一旦一個精靈被編程移動到一個隨機的地方,一旦它的隊友被殺死,就直接進入他自己種類的其他敵人的交火。我該如何做一些事情來檢查它是否正在移動,因爲大部分時間,遊戲看起來像試圖自殺的敵人。我希望敵人能夠自己,但不是在他們移動時。如何檢查是否有東西在移動?
-(void)enemy2{
enemy2 = [CCSprite spriteWithFile:@"enemy2.png"];
int d = arc4random()%480+480;
int o = arc4random()%320+320;
x = arc4random()%480;
if(x <= 480 && x>= 460){
x=x-100;
}
if(x <= 100){
x = x+50;
}
y = arc4random()%320;
if(y <=320 && y >= 290){
y = y-100;
}
if(y < 100){
y = y + 100;
}
enemy2.position = ccp(o,d);
xc = x;
te = y;
[enemytwo addObject :enemy2];
[self addChild:enemy2];
for(CCSprite *enetw in enemytwo){
CCRotateBy *rotation = [CCRotateBy actionWithDuration:15 angle:1080];
CCRepeatForever * repeatforever = [CCRepeatForever actionWithAction:rotation];
int f = arc4random()%480;
int s = arc4random()%320;
if(f <= 480 && s>= 460){
f=f-100;
}
if(f <= 100){
f = f+50;
}
s = arc4random()%320;
if(s <=320 && s >= 290){
s = s-100;
}
if(s < 100){
s = s + 100;
}
CCMoveTo *move = [CCMoveTo actionWithDuration:0.8 position:ccp(f,s)];
[enetw runAction: repeatforever];
[enetw runAction:[CCSequence actions:move, nil]];
}
}
彈:
}
碰撞(在enemy2部分):
-(void)update{
deletehealth = [[NSMutableArray alloc] init];
enemytwodelete = [[NSMutableArray alloc]init];
enemythreedelete2 = [[NSMutableArray alloc]init];
NSMutableArray *playerdelete = [[NSMutableArray alloc] init];
NSMutableArray * deleteclean = [[NSMutableArray alloc]init ];
projectilesToDelete = [[NSMutableArray alloc] init];
enemydelete = [[NSMutableArray alloc]init];
for(CCSprite *projectile in proj)
{
CGRect project = CGRectMake(projectile.position.x - (projectile.contentSize.width/2),
projectile.position.y - (projectile.contentSize.height/2),
projectile.contentSize.width,
projectile.contentSize.height);
CGRect playerRect = CGRectMake(player.position.x - (player.contentSize.width/2),
player.position.y - (player.contentSize.height/2),
player.contentSize.width,
player.contentSize.height);
if (CGRectIntersectsRect(playerRect, project)) {
[projectilesToDelete addObject: projectile];
emitter = [[CCParticleExplosion alloc] init];
emitter.texture = [[CCTextureCache sharedTextureCache]addImage:@"particle.png"];
emitter.position = ccp(projectile.position.x,projectile
.position.y);
[self addChild:emitter];
// NSLog(@"%i",life);
if(life > 0){
//lifeholder = [[NSMutableArray alloc] init];
life -= 5;
[self.progressTimer setPercentage:life];
}else{
[playerdelete addObject:player];
emitter.position = ccp(projectile.position.x,projectile
.position.y);
[[CCDirector sharedDirector]replaceScene:[CCTransitionFade transitionWithDuration:3 scene:[end node]]];
}
}
for(CCSprite*enemies in enemy){
CGRect enemyRect = CGRectMake((enemies.position.x-5),
enemies.position.y-8.3,
7,
15);
if(CGRectIntersectsRect(enemyRect, project)){
enemyex = [[CCParticleExplosion alloc] init];
enemyex.texture = [[CCTextureCache sharedTextureCache]addImage:@"particle.png"];
enemyex.position = ccp(enemies.position.x, enemies.position.y);
[self addChild:enemyex];
[enemydelete addObject:enemies];
[projectilesToDelete addObject:projectile];
[self powerups];
[self clear];
}
}
for(CCSprite * enemies2 in enemytwo){
CGRect enemy2Rect = CGRectMake(enemies2 .position.x - (enemies2 .contentSize.width/2),
enemies2 .position.y - (enemies2 .contentSize.height/2),
enemies2 .contentSize.width,
enemies2.contentSize.height);
if(CGRectIntersectsRect(enemy2Rect, project)){
explode = [[CCParticleExplosion alloc] init];
explode .texture = [[CCTextureCache sharedTextureCache]addImage:@"particle.png"];
explode .position = ccp(enemies2.position.x, enemies2.position.y);
[self addChild:explode ];
[enemytwodelete addObject:enemies2];
[projectilesToDelete addObject:projectile];
[self powerups];
[self clear];
}
}
創建存儲字符的運動狀態的BOOL。只要字符開始運行並停止運行,將布爾值設置爲運行或不運行(YES或NO)。 – tallen11
我該怎麼做?移動代碼是 CCMoveTo * move = [CCMoveTo actionWithDuration:0.8 position:ccp(f,s)]; [enetw runAction:repeatforever];[enetw runAction:[CCSequence actions:move,nil]]; 如何在運行代碼時設置它? – Alexyuiop
瞬間添加答案 – tallen11