我想知道如何在 aCCAction
完成后调用一个方法(我还想在它第一次调用后每 2.5 秒调用一次)。我有一个随机位置的精灵,我希望它在移动到随机位置后运行这个方法(射击子弹)。到目前为止,该方法仍在移动时被调用。任何人都可以帮忙吗?
这是敌人的创建方法:
(void)enemy1{
gjk= arc4random()%6;
enemy1 = [CCSprite spriteWithFile:@"enemy1.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;
}
enemy1.position = ccp(o,d);
[enemy1 runAction:[CCMoveTo actionWithDuration:3 position: ccp(x,y)]];
CCRotateBy *rotation = [CCRotateBy actionWithDuration:20 angle:1080];
CCRepeatForever * repeatforever = [CCRepeatForever actionWithAction:rotation];
[enemy1 runAction:repeatforever];
[self addChild:enemy1];
[enemy addObject :enemy1];
}
以及发射弹丸的方法:
(void)projectileShooting:(ccTime)dt {
projcount++;
if(enemy1.position.y < 320){
v = ccp(player.position.x,player.position.y);
for(CCSprite *enemies in enemy){
CCSprite * projectilebullet = [CCSprite spriteWithFile:@"Projectile.png"];
[proj addObject:projectilebullet];
[self addChild:projectilebullet];
CGPoint MyVector = ccpSub(enemies.position,player.position );
MyVector = ccpNormalize(MyVector);
MyVector = ccpMult(MyVector, enemies.contentSize.width/2);
MyVector = ccpMult(MyVector,-1);
projectilebullet.position = ccpAdd(enemies.position, MyVector);
}
}
拍摄方法是代码在init方法中调用的,所以每2.5秒调用一次。
[self schedule:@selector(projectileShooting:) interval:2.5];
我知道我试图通过使拍摄发生在y位置 < 320 时拍摄,但是当它通过 320 的位置时它仍在移动。