我希望我的两个敌人能够设置为攻击模式,但是因为只有最后添加的敌人才会被设置为攻击模式。
这有什么办法吗?任何提示或建议表示赞赏。如果您需要更多代码,请告诉我。
-(void)ViewDidLoad {
for (_enemyPoint in [self.enemyGroup objects]) {
self.enemy = [[CCSprite alloc] initWithFile:@"Icon.png"];
self.enemy.scale = 32.0f/57.0f;
self.enemy.position = CGPointMake([_enemyPoint[@"x"] integerValue], [_enemyPoint[@"y"] integerValue]);
[self addChild:self.enemy];
}
self.pathfinder = [HUMAStarPathfinder pathfinderWithTileMapSize:self.tileMap.mapSize
tileSize:self.tileMap.tileSize
delegate:self];
[self enemyAttack];
}
- (void)enemyAttack{
self.epath = [self.pathfinder findPathFromStart:self.enemy.position
toTarget:self.player.position];
self.eactions = [NSMutableArray array];
for (_epointValueInPath in self.epath) {
self.epoint = _epointValueInPath.CGPointValue;
self.emoveTo = [CCMoveTo actionWithDuration:1.0f position:self.epoint];
[self.eactions addObject:self.emoveTo];
}
self.esequence = [CCSequence actionWithArray:self.eactions];
[self.enemy runAction:self.esequence];
}
答案 0 :(得分:0)
在viewDidLoad
中查看您的循环。首先,使用iVar作为循环变量。可能不是你想要的。其次,在每次迭代中分配self.enemy
,但在循环完成后调用enemyAttack
。
此外,enemyAttack
不接受任何参数,因此它使用内部状态。由于在循环遍历所有对象之后调用它,self.enemy
将始终是集合中的最后一个对象(如果集合中有任何内容)。
因此,您只看到最后一项被激活为敌人并不奇怪。
答案 1 :(得分:0)
您是否尝试将[self enemyAttack];
调用放在for
循环中?