我有一个气球游戏。我从底部添加气球,它们会飞起来,同时能够飞出屏幕。我给了气球物理主体,以便它们彼此碰撞,但我想让气球在屏幕的左右边缘弹起。我找到了一个解决方案,让 Sprite 对象在 Rays 网站上的所有屏幕上反弹。但我需要一个不同的解决方案。 这是我的气球代码:
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];
然而,在几次气球碰撞后,墙壁正在移动。我真的不知道哪里有什么办法或属性(property)可以阻止这种行为。 :
leftWall.physicsBody.dynamic = NO;
应该停止所有运动,但事实并非如此。请帮忙,谢谢:)。
最佳答案
您尚未正确设置您的categoryBitMasks。
randomBallon.physicsBody.categoryBitMask = balloonCategory;
randomBallon.physicsBody.collisionBitMask = wallCategory|balloonCategory;
leftWall.physicsBody.collisionBitMask = wallCategory;
leftWall.physicsBody.contactTestBitMask = balloonCategory;
CategoryBitMask 是您要分配给 Sprite 的类别。 CollisionBitMask 是您希望 Sprite 碰撞的类别。在这种情况下,气球应设置为与墙壁和其他气球碰撞。墙壁应设置为仅与气球碰撞。
关于ipad - 如何制作一个在碰撞时具有物理主体不可移动/静态的 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803085/