ios - 如何给屏幕边缘一个物理体

标签 ios ios7 sprite-kit skphysicsbody

我有一个背景 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/

相关文章:

swift - 以编程方式使用 Assets 创建 SKSpriteNode

ios - 如何在 TableViewController 中设置多个 segue ViewController?

ios - Three20 - 纵向模式下的 TTSplitViewController

iphone - ALAsset 视频压缩

ios - 'malloc_error_break' 是否发生在与底层内存损坏相同的线程上

ios - 如何在 iOS 7 上嵌入 youtube 视频

ios - 在 Storyboard 中使用 viewController 类的一个实例

ios - SpriteKit 碰撞检测

xcode - 如何安装仅由 swift 文件组成的 swift 库

ios - iAd 不会加载测试广告