Iphone can';t偏移ccnode,使我以我的主要角色为中心

Iphone can';t偏移ccnode,使我以我的主要角色为中心,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,我有一个标准的cocos2d启动层(HelloWorldLayer)。我为我的地形创建了另一个名为“Terrain”的CCNode类型的类。然后我将其添加到层的init中的层中: terrain = [[Terrain alloc] initWithWorld:world AndLevel:0]; [self addChild:terrain z:1]; 我添加了一个“CarObject”类(一个CCSprite类),并将一个car对象添加到我的地形中 car = [[CarObject a

我有一个标准的cocos2d启动层(HelloWorldLayer)。我为我的地形创建了另一个名为“Terrain”的CCNode类型的类。然后我将其添加到层的init中的层中:

terrain = [[Terrain alloc] initWithWorld:world AndLevel:0];
[self addChild:terrain z:1];
我添加了一个“CarObject”类(一个CCSprite类),并将一个car对象添加到我的地形中

 car = [[CarObject alloc] initWithWorld:world];
[terrain addChild:car];
-i、 e.在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的更新方法中尝试这个方法(而不是[terrain setOffsetX..)


地形正在移动。

汽车是地形的产物。因此,汽车的位置相对于地形的位置。由于您将地形的位置基于汽车的位置,而汽车的位置实际上是相对于地形的位置的,所以您可能会遇到这样的情况,即您的位置更新只是相互抵消

如果要移动地形,同时保持汽车居中,则不应将汽车添加为地形的子对象。而是将其添加到与地形相同的节点(HelloWorldLayer)。然后,您可以独立地移动汽车和地形

self.position = CGPointMake(self.position.x-1, self.position.y);