0

画面にさまざまなスプライトがあり、ターゲットを追いかけています。それはすべてうまくいきます。

私の質問は、境界を設定する方法はありますか? 画面上の 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];
    }
}

このエラーが発生し続けますか? -[__NSArrayM position]: 認識されないセレクターがインスタンス 0x84597b0 に送信されました

私がやりたいのは、スプライトを 160 で停止させ、checkCollision メソッドの目的を達成することだけです。位置を 160 に設定するだけです。

4

2 に答える 2

1

彼らが限界に達したとき、彼らに何をしてもらいたいですか?

スケジュールされた更新方法でそれらを確認するだけです。

init のどこかで実行できます

[self schedule:@selector(update:)];

これにより、フレームごとに update メソッドが呼び出されます。

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

あなたの更新された質問に関しては、あなたはNSMutableArray. gameObjects 配列は配列の配列です。あなたがそうfor (CCNode *myNode in _gameObjects)するとき、出てくるオブジェクトがCCNodeのものになるとは限りませんNSMutableArray

于 2013-03-21T00:53:39.707 に答える
0

スプライト(ゲームオブジェクト)クラスのsetPositionメソッドをオーバーライドして、垂直位置を160を超えないように制限できます。

于 2013-03-21T19:50:18.533 に答える