SKPhysicsBody在Xcode 6.2 iOS 8.2升级后倒置

时间:2015-03-14 17:09:23

标签: ios objective-c sprite-kit skphysicsbody

编辑:这在6.3 / 8.3更新中仍然存在。任何人都有修复?

在Xcode 6.2 / iOS 8.2之前,this问题解决了我的问题。现在我的SKPhysicsBodies在我重新加载精灵之后再次颠倒过来,或者从先前使用过的"中创建一个新的SKPhysicsBody。质地。这对我的游戏来说是个大问题,因为它会让我整场比赛变得混乱。

这是我在init中加载纹理的地方:

@property (strong, nonatomic) SKTextureAtlas *allTextures;
    - (id)initWithSize:(CGSize)size
    {
        self = [super initWithSize:size];
        if (self)
        {
            self.allTextures = [SKTextureAtlas atlasNamed:@"AllTextures"];
            [SKTextureAtlas preloadTextureAtlases:@[ self.allTextures ] withCompletionHandler:^{
                          NSLog(@"ATLASES LOADED");
            }];
        }
        return self;
    }

这是我创建Sprite和SKPhysicsBody的地方:

//对象在@implementation中设置为SKSpriteNode *object;

- (void)setupObject
{
    object = [SKSpriteNode spriteNodeWithTexture:[self.allTextures textureNamed:@"Object01"]];
    object.position = CGPointMake(self.size.height / 2, object.size.width + 20);
    object.name = kObjectName;
    object.zPosition = 1;
    object.physicsBody = [self setupObjectPhysicsBody];
    [worldNode addChild:object];
}

- (SKPhysicsBody *)setupObjectPhysicsBody
{
    SKPhysicsBody *objectBody = [SKPhysicsBody bodyWithTexture:object.texture size:object.size];
    objectBody.affectedByGravity = YES;
    objectBody.dynamic = YES;
    objectBody.mass = 1.0;
    objectBody.restitution = 0.0;
    objectBody.allowsRotation = NO;
    objectBody.categoryBitMask = objectCategory;
    objectBody.collisionBitMask = groundCategory | obsticalCategory | waterCategory | blockCategory | otherCategory;
    objectBody.contactTestBitMask = groundCategory | obsticalCategory | otherCategory;
    objectBody.usesPreciseCollisionDetection = YES;
    return objectBody;
}

1 个答案:

答案 0 :(得分:2)

在这个错误之后(从iOS 8.2开始?)我终于设法摆脱逆物理体效应。

我是如何修复的?我只是将我正在使用的精灵替换为另一个用于其他测试的精灵,并且它可以在不反转物理体的情况下工作。所以我什么时候去photoshop并制作第一个精灵的另一个版本(有问题的那个),它终于奏效了!

所以,我认为这与精灵的复杂性有关,也许是因为它无法找到一个封闭的形状"在图像上,我不知道,但知道它正在使用新的精灵。

我希望你现在至少可以继续开发,并且算法Apple将来会修复它!