Iphone can';t偏移ccnode,使我以我的主要角色为中心
我有一个标准的cocos2d启动层(HelloWorldLayer)。我为我的地形创建了另一个名为“Terrain”的CCNode类型的类。然后我将其添加到层的init中的层中: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
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);