8

SKNode の xScale プロパティを使用して、スプライトを水平方向に反転します。現在、iOS をバージョン 7.1 に更新した後、水平方向のフリップにより、オブジェクトが地面の中に沈みます。(下のアニメーションを参照)。この問題は、xScale プロパティでのみ発生します。垂直方向のフリップは正常に機能します。

// Init
{
    SKSpriteNode* ground = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(winSize.width, 150)];
    ground.position = CGPointMake(winSize.width/2, ground.size.height/2);
    ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ground.size center:CGPointZero];
    ground.physicsBody.dynamic = NO;
    ground.physicsBody.categoryBitMask = 0x01;
    ground.physicsBody.collisionBitMask = 0x02;
    ground.physicsBody.contactTestBitMask = 0x02;
    [self.world addChild:ground];

    SKSpriteNode* turtle = [SKSpriteNode spriteNodeWithImageNamed:@"turtle.png"];
    turtle.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:turtle.size.width/2];
    turtle.physicsBody.categoryBitMask = 0x02;
    turtle.physicsBody.collisionBitMask = 0x01;
    turtle.physicsBody.contactTestBitMask = 0x01;
    turtle.position = CGPointMake(winSize.width/2, winSize.height/2);
    [self.world addChild:turtle];
    self.turtle = turtle;
}

// Somewhere else
{
    self.turtle.xScale *= -1;
}

Xスケールフリップ問題

4

3 に答える 3

6

数日前にこの問題に遭遇しました。スプライトの動き (右または左) に基づいてスプライトを反転したかったのですが、xScale を設定すると衝突/接触が無効になることがわかりました。

ただし、xScale プロパティを設定するたびにこの行を使用すると、すべて正常に戻りました。

node.xScale = -1.0
node.physicsBody = node.physicsBody;
于 2014-03-28T06:52:33.567 に答える