Ipad 如何使物理体在碰撞时不可移动/静止的精灵?

Ipad 如何使物理体在碰撞时不可移动/静止的精灵?,ipad,ios8,sprite-kit,collision-detection,Ipad,Ios8,Sprite Kit,Collision Detection,我有一个气球游戏。我从底部添加气球,它们可以在屏幕外飞起来。我给了气球PhysicsBody,让它们互相碰撞,但我想让气球在屏幕的左边缘和右边缘出现。我找到了一个解决方案,精灵对象在网站上的所有屏幕上反弹。但我需要一个不同的解决方案。 这是我的气球代码: MBDBallon *randomBallon = [[MBDBallon alloc] initWithImageName:balloonImageName

我有一个气球游戏。我从底部添加气球,它们可以在屏幕外飞起来。我给了气球PhysicsBody,让它们互相碰撞,但我想让气球在屏幕的左边缘和右边缘出现。我找到了一个解决方案,精灵对象在网站上的所有屏幕上反弹。但我需要一个不同的解决方案。 这是我的气球代码:

MBDBallon *randomBallon = [[MBDBallon alloc] initWithImageName:balloonImageName
                                               andBallonSize:ballonSize
                                               withBallonImageName:[self.balloonColorImageNamesArray objectAtIndex:balloonWithColorIndex]
                                               withStartingPosition:CGPointMake(self.viewSize.width/2, - self.viewSize.height )];

                    //randomBallon.name = [self returnRandomImageNameFromArray:self.ballonSpriteImageNamesArray];
                randomBallon.physicsBody.usesPreciseCollisionDetection = YES;
                randomBallon.physicsBody.categoryBitMask = balloonCategory;
                randomBallon.physicsBody.collisionBitMask = balloonCategory;
                randomBallon.physicsBody.contactTestBitMask = balloonCategory;
这是我左边的代码:

  SKSpriteNode *leftWall = [[SKSpriteNode alloc] initWithColor:[UIColor redColor] size:CGSizeMake( self.viewSize.width / 15, self.viewSize.height * 3 )];
    [leftWall setAnchorPoint:CGPointMake(0.0f, 0.0f)];

    leftWall.position = CGPointMake( self.viewSize.width / 15 , 0.0f );
    leftWall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake( self.viewSize.width / 15, self.viewSize.height * 3 )];
    leftWall.physicsBody.categoryBitMask = balloonCategory;
    leftWall.physicsBody.collisionBitMask = balloonCategory;
    leftWall.physicsBody.contactTestBitMask = balloonCategory;
    leftWall.physicsBody.usesPreciseCollisionDetection = YES;
    leftWall.physicsBody.allowsRotation     = NO;
    leftWall.physicsBody.dynamic            = NO;
    leftWall.physicsBody.friction = 0.0f;
    [self addChild:leftWall];
然而,在一些气球碰撞之后,墙正在移动。我真的不知道从哪里可以阻止这种行为。委员会:

leftWall.physicsBody.dynamic            = NO;

应该停止所有运动,但它不会。请帮助,谢谢:)。

您尚未正确设置您的类别BitMasks

randomBallon.physicsBody.categoryBitMask = balloonCategory;
randomBallon.physicsBody.collisionBitMask = wallCategory|balloonCategory;

leftWall.physicsBody.collisionBitMask = wallCategory;
leftWall.physicsBody.contactTestBitMask = balloonCategory;
CategoryBitMask是要指定给精灵的类别。CollisionBitMask是您希望精灵与之碰撞的类别。在这种情况下,引出序号应设置为与墙和其他引出序号碰撞。墙壁应设置为仅与气球碰撞。

适用于iOS 8.1(设备)和iOS 8.1,7.1模拟器。很好很简单的解释。泰:)