在更新循环中跟踪数组中的精灵位置

时间:2014-06-24 18:47:10

标签: objective-c cocos2d-iphone

您好我有一个循环将怪物添加到NSMutableArray

 - (void)addMonster:(CCTime)dt {


 _monster1 = [[Monster1 alloc] init];




for(int i=0;i<=num; i++)
{

    [spriteArray insertObject:_monster1  atIndex:num];

}

[_physicsWorld addChild:_monster1];


num++;
}

在我的更新循环中,此代码用于检查每个精灵是否已通过某个点:

for (int i=0; i <= num; i++) 
{
    CCSprite *tempSprite = (CCSprite *) [spriteArray objectAtIndex:i];


    if (tempSprite.position.x > 100) {

    structurelife--;


    }

}

然而,这段代码不起作用(根据有多少怪物通过这一点来减少int结构寿命,我非常困难,所以任何帮助都会受到赞赏)。 Sprite的位置保持在0,0,即使它正在屏幕上移动。

1 个答案:

答案 0 :(得分:0)

根据您的OP尝试执行的操作并根据您编写的代码,您的代码不正确。你声明你正试图添加&#34;怪物&#34;到一个数组,但你正在做的是一遍又一遍地向同一个怪物添加指针。

你的循环基本上是多次向它添加相同的怪物,而不是向阵列添加不同的怪物。这是否是您的代码的唯一问题无法通过发布的少量数量来确定,但启动您的方法应该基于您似乎尝试做的事情看起来像这样:

- (void)addMonster:(CCTime)dt
{
    for (int i=0; i<=num; i++)
    {
        Monster1 monster = [[Monster1 alloc] init];
        [spriteArray insertObject:monster atIndex:num];
        [_physicsWorld addChild:monster];
    }

    num++;
}

但这又是基于您发布的代码。

我希望这会有所帮助。