【发布时间】:2012-12-15 16:24:36
【问题描述】:
我目前正在开发一款必须在 iPhone 屏幕上绘制一系列气泡的游戏。每个气泡都有自己的花栗鼠身体,它是使用名为 PhysicsEditor 的多边形物理编辑器绘制的。有了它,我创建了一个 .plist 文件,其中包含创建花栗鼠身体所需的信息(质量、弹性、锚点等)。
下面是我用来创建具有给定坐标的气泡的代码。
- (cpBody *)drawBubblesWithX:(int)x andY:(int)y {
NSString *name = names[arc4random() % 7];
CCSprite *sprite; // Will contain the sprite object if name isn't Nil
// create physics shape
[[GCpShapeCache sharedShapeCache] anchorPointForShape:@"BubbleSlot"];
cpBody *body = [[GCpShapeCache sharedShapeCache] createBodyWithName:@"BubbleSlot" inSpace:space withData:nil];
cpBodySetPos(body, cpv(x, y));
if (name != nil) { // If a color has been selected
// create and add sprite
sprite = [CCSprite spriteWithFile:[NSString stringWithFormat:@"%@.png", name]];
[self addChild:sprite];
// set the position of the sprite to be the same as the physics body
sprite.position = CGPointMake(x, y);
// set the position of body based on the sprite object
cpBodySetUserData(body, (__bridge cpDataPointer)(sprite));
}
return body;
}
[[GCpShapeCache sharedShapeCache] 对象包含用于创建实体的 .plist 文件。在.plist中,只有1个body,命名为“BubbleSlot”,用作创建游戏中所有气泡的模板。
body 的锚点约为 (0.5, 0.5)。
我的问题是 cpBodySetPos() 函数没有设置我的物理对象的位置。它由锚点改变。例如,要设置我的 cpBody 对象在 iPhone 屏幕中心的位置,我会执行 cpBodySetPos(body, cpv(160,240))。但是由于某种原因,我必须在 .plist 文件中将主体的锚点设置为 (160,240) 的值,然后相应地创建主体。
【问题讨论】:
标签: objective-c ios cocos2d-iphone physics chipmunk