现在我有精灵在屏幕上移动,当你触摸一个精灵时,你正在“射击”它。要查看是否有任何“敌人”被“击中”,我正在使用CGRectContainPoint
它工作正常,直到我希望它需要更多的一击才能移除敌人。这是上一步:
- (void)update:(ccTime)dt {
_shot = bullet.position;
BOOL enemyHit = FALSE;
NSMutableArray *targetsToDelete = [[NSMutableArray alloc] init];
for (CCSprite *target in _targets) {
CGRect targetRect = target.boundingBox;
if (CGRectContainsPoint(targetRect, _shot)) {
enemyHit = TRUE;
Enemy *enemy = (Enemy *)target;
enemy.hp--;
if (enemy.hp <= 0) {
[targetsToDelete addObject:target];
}
break;
}
}
for (CCSprite *target in targetsToDelete) {
[_targets removeObject:target];
[self removeChild:target cleanup:YES];
}
[targetsToDelete release];
}
我遇到的问题是它的更新速度比重置触摸位置的速度要快。这样一来,它就会在从 3 开始后将敌人的生命值带到 -2。我该如何解决这个问题?
编辑:我真的没有办法设置触摸所在的CGPoint,然后在一次更新迭代后将其重置为屏幕外。