我正在使用此代码向上启动:
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent* )event
{
//Spawn the bullet
CCSprite * projectile = [CCSprite spriteWithFile:@"Projectile.png" rect:CGRectMake(0, 0, 17.5, 10)];
projectile.position = ccp(donk.position.x , 50);
[self addChild:projectile];
//Actualy Fire
[projectile runAction: [CCMoveTo actionWithDuration:.2 position: ccp (donk.position.x , 350)]];
}
它可以像我想要的那样工作,但是如何使用if语句来检查它是否在屏幕顶部以外的弹丸是否可以将其移除?
我试过用这个:
if (projectile.position.y >= 330) {
CCLOG(@"Removed");
[self removeChild:projectile cleanup:YES];
}
但是我忘记了触摸结束只被调用一次。
答案 0 :(得分:2)
考虑何时你应该检查子弹是否在屏幕外。不是在同一时刻被解雇了,对吗?
有很多方法可以做到这一点。
您已经有一个moveTo动作。 CCActions可以有回调,告诉你什么时候完成;看到标题。
您可以定义update:方法并使用scheduleUpdates启用它,以便能够每帧测试位置。
如果使用物理引擎,则可以为屏幕边缘制作“墙”并移除子弹以响应碰撞检测。
也可能有其他方法。了解框架提供的内容。
答案 1 :(得分:1)
这个怎么样:
[projectile runAction:[CCSequence actions:
[CCMoveTo actionWithDuration:.2 position:ccp(donk.position.x,350)],
[CCCallBlock actionWithBlock:^{
[projectile removeFromParentAndCleanup:YES];
}],
nil]];
(未经测试)