Cocos2d iphone cocos2d中精灵的边界?

Cocos2d iphone cocos2d中精灵的边界?,cocos2d-iphone,Cocos2d Iphone,我的屏幕上有各种各样的精灵,它们在追逐目标。一切正常 我的问题是,有没有办法设定边界?我不希望他们能够在屏幕上移动超过160点 我看到的每一个例子都是使用box2d,有没有办法严格使用cocos2d呢 - (void)addPlayers { winSize = [CCDirector sharedDirector].winSize; _officer = [[Officer alloc] initWithLayer:self]; _officer.position =

我的屏幕上有各种各样的精灵,它们在追逐目标。一切正常

我的问题是,有没有办法设定边界?我不希望他们能够在屏幕上移动超过160点

我看到的每一个例子都是使用box2d,有没有办法严格使用cocos2d呢

- (void)addPlayers {
    winSize = [CCDirector sharedDirector].winSize;
    _officer = [[Officer alloc] initWithLayer:self];
    _officer.position = ccp(winSize.width/2, 40);
    _officer.tag = 1;
    [_batchNode addChild:_officer];

    _shotCaller = [[ShotCaller alloc] initWithTeam:2 layer:self];
    //create spawn point
    _shotCaller.position = ccp(100, 100);
    [_batchNode addChild:_shotCaller];

    NSString *gunName = [NSString stringWithFormat:@"gun.png"];
    _gun = [CCSprite spriteWithSpriteFrameName:gunName];
    _gun.anchorPoint = ccp(0.5, 0.25);
    _gun.position = ccp(_shotCaller.contentSize.width/2, _shotCaller.contentSize.height/2 -   20);
    [_shotCaller addChild:_gun];
    [self moveRandom:_shotCaller];

    NSMutableArray *team1GameObjects = [NSMutableArray arrayWithObject:_officer];
    NSMutableArray *team2GameObjects = [NSMutableArray arrayWithObject:_shotCaller];
    _gameObjects = [NSMutableArray arrayWithObjects:team1GameObjects, team2GameObjects, nil];
}

for(CCSprite *myNode in _gameObjects)
{
    if (myNode.position.y == 160 ) {
        NSLog(@"1");
        [self checkCollision];
    }
}
我老是犯这个错误? -[\uu NSArrayM position]:发送到实例0x84597b0的无法识别的选择器


我想做的就是让精灵停在160,这就是checkCollision方法的作用。只需将其位置设置为160。

当他们达到阈值时,您希望他们做什么

您可以在计划的更新方法中检查它们

在init中的某个地方,您可以运行

[self schedule:@selector(update:)];
这将在每一帧调用update方法

- (void)update:(ccTime)dt
{
     for (CCSprite *s in self.arrayOfSpritesToCheck)
     {
           if(s.position.y > 160) {
                 //Do something
           }
     }
}

至于您更新的问题,您正在
NSMutableArray
上运行position。您的gameObjects数组是一个数组数组。当您为(游戏对象中的CCNode*myNode)执行
操作时,
不能保证出来的对象是CCNode的,事实上,在您的情况下,它们是
NSMutableArray

您可以覆盖sprite(游戏对象)类中的setPosition方法,并将垂直位置限制为不超过160

呃,无论什么代码在移动你的精灵,都要确保它不会超过你的边界。我就是这么做的,它成功了。我唯一的问题是它也将我的背景移到了我设置精灵所做的事情上。所以我想真正的问题是,我如何才能做到这一点,并排除背景,这是一个精灵?不要循环通过self.children。通过你创建的一个数组循环你想要修复的精灵我知道你告诉我做的是100%正确的,但我仍然得到一个错误。我将编辑我的问题并在其中添加一些代码。