0

タイル マップ レイヤーと他のノードの処理方法がわかりません。CCNodeメニューボタン、スコア、ジョイスティックなど、マップ全体をスクロールするときに常に固定(スクロールしない)しなければならないレイヤー( )をもう1つ作りたいです。

self.theMap=[CCTiledMap tiledMapWithFile:@"map.tmx"];
self.bgLayer=[theMap layerNamed:@"bg"];
  [self addChild:theMap z:-1];



  CCNode *joystickNode;
  joystickNode=[CCNode node];
  [bgLayer.parent addChild:joystickNode z:2];


upArrowFrame=[CCSpriteFrame frameWithImageNamed:@"uparrow.png"];
upArrow=[CCButton buttonWithTitle:@"" spriteFrame:upArrowFrame];
[upArrow setTarget:self selector:@selector(upArrowPressed)];
upArrow.position= ccp(190,190);
[joystickNode addChild:upArrow z:2];

現在upArrow、画面にはまったく表示されません。selfの代わりにを追加するjoystickNodeと表示されます。

新しい CCNode がどのような親を持つべきか、私には理解できません。誰かが私にそれを説明できますか?また、新しい CCNode を と の子として追加しようとしましselftheMap

編集: おっと、それは実際にカメラを動かしています。この場合、どのように実装しますか?

    -(void)setCenterOfScreen :(CGPoint) position {
    CGSize screenSize=[[CCDirector sharedDirector]viewSize];
    int x=MAX(position.x, screenSize.width/2);
    int y=MAX(position.y, screenSize.height/2);

    x= MIN(x, theMap.mapSize.width * theMap.tileSize.width - screenSize.width/2);
    y= MIN(y, theMap.mapSize.height * theMap.tileSize.height - screenSize.height/2);

    CGPoint goodPoint =ccp(x,y);
    CGPoint centerOfScreen = ccp(screenSize.width/2, screenSize.height/2);
    CGPoint difference = ccpSub(centerOfScreen, goodPoint);

    self.position=difference;


}

- (void)update:(CCTime)dt{


    [self setCenterOfScreen:hero.position];

}
4

0 に答える 0