gpt4 book ai didi

sprite-kit - 翻转的X缩放破坏了碰撞处理(SpriteKit 7.1)

转载 作者:行者123 更新时间:2023-12-04 05:18:07 26 4
gpt4 key购买 nike

我使用SKNode的xScale属性水平翻转 Sprite 。现在,将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;
}

最佳答案

我相信这是SpriteKit中的错误。

无论如何,这是一个解决问题的方法(实际上,这是比实际解决方案更多的解决方法,但是...):将 Sprite 包装在容器节点中。 同样,容器节点拥有PhysicalBody,而子节点仅仅是一个图形节点。这样,您可以使用xScale安全地翻转 Sprite ,而不会影响节点的物理性质。

// Init
{
SKSpriteNode* turtleSprite = [SKSpriteNode spriteNodeWithImageNamed:@"turtle.png"];
self.turtleSprite = turtleSprite;

SKNode* turtleWrapper = [SKNode node];
turtleWrapper.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:turtleSprite.size.width/2];
turtleWrapper.physicsBody.categoryBitMask = 2;
turtleWrapper.physicsBody.collisionBitMask = 1;
turtleWrapper.physicsBody.contactTestBitMask = 1;

[turtleWrapper addChild:turtleSprite];
[self.world addChild:turtleWrapper];
}

// Elsewhere
{
self.turtleSprite.xScale *= -1;
}

关于sprite-kit - 翻转的X缩放破坏了碰撞处理(SpriteKit 7.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com