我有一个背景 Sprite ,我想赋予它物理主体。
background.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(screenWidth , screenHeight)];
问题是 Sprite 在屏幕边界内,当它们撞击屏幕边缘时,我试图检测与这些 Sprite 的碰撞。相反,它会自动检测碰撞,因为我的 Sprite 已经在背景的物理体内。我该怎么办?
更新:以上问题已为我解答,现在我有另一个问题。它检测接触的正确方式,与我的大小和背景位置有关,有人可以帮助我吗。
//init several sizes used in all scene
screenRect = [[UIScreen mainScreen] bounds];
screenHeight = screenRect.size.height;
screenWidth = screenRect.size.width;
//set background
self.background = [SKSpriteNode spriteNodeWithImageNamed:@"GameBG3.5inchN.png"];
self.background.size = CGSizeMake(screenHeight, screenWidth);
self.background.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
//add pphysics body
self.background.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:screenRect]; // 1
self.background.physicsBody.dynamic = YES; // 2
self.background.physicsBody.categoryBitMask = screenEdge; // 3
self.background.physicsBody.contactTestBitMask = cd | floppy; // 4
self.background.physicsBody.collisionBitMask = 0; // 5
[self addChild:self.background];
答案:问题在于它初始化我的尺寸的位置,游戏是横向的,但值是纵向的
最佳答案
您需要基于边缘的实体,而不是基于体积的实体。使用bodyWithEdgeLoopFromRect:
看看physics chapter in the programming guide 。
关于ios - 如何给屏幕边缘一个物理体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948028/