標準の cocos2d スタートアップ レイヤー (HelloWorldLayer) があります。地形用に「Terrain」という名前の CCNode タイプの別のクラスを作成しました。次に、レイヤーの初期化でレイヤーに追加します。
terrain = [[Terrain alloc] initWithWorld:world AndLevel:0];
[self addChild:terrain z:1];
「CarObject」クラス (CCSprite クラス) を追加し、車のオブジェクトを地形に追加します
car = [[CarObject alloc] initWithWorld:world];
[terrain addChild:car];
- つまり、地形と車の両方の initWithWorld で、いくつかの Box2d コードを初期化します
次に、車のオブジェクトを移動するときに画面の中央に配置しようとします。更新メソッドでこれを行います。
float offsetX = car.position.x;
float offsetY = car.position.y;
[terrain setOffsetX:(int)offsetX andOffsetY:(int)offsetY];
setOffsetX.. メソッドは次のとおりです。
- (void) setOffsetX:(int)newOffsetX andOffsetY:(int)newOffsetY {
_offsetX = newOffsetX;
_offsetY = newOffsetY;
CGSize winSize = [CCDirector sharedDirector].winSize;
self.position = CGPointMake(-(_offsetX - winSize.width/2), -(_offsetY - winSize.height/2));
}
NSLog を使用して地形の位置が変化するかどうかを確認すると、位置が実際に変化することがわかりますが、ビューは変化しません。私は何を間違っていますか?それはばかげた間違いだと確信しています!
ところで、HelloWorldLayer の update メソッドでこれを試してみると ([terrain setOffsetX..] の代わりに)
self.position = CGPointMake(self.position.x-1, self.position.y);
地形が動いています。