在我目前使用 SpriteKit 的项目中,我有一堆需要在不同时间独立放大和缩小的精灵。问题是当我缩放节点时,物理体不会随它缩放,所以它搞砸了物理。这是我为了这个问题而放在一起的一个小例子:
CGSize objectSize = CGSizeMake(100, 100);
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0, 0, self.size.width, self.size.height)];
SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:objectSize];
n1.position = CGPointMake(self.size.width/2, 2*self.size.height/3);
n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:objectSize];
n1.physicsBody.affectedByGravity = YES;
[self addChild:n1];
SKSpriteNode *n2 = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:objectSize];
n2.position = CGPointMake(self.size.width/2, self.size.height/3);
n2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:objectSize];
n2.physicsBody.affectedByGravity = YES;
[self addChild:n2];
[n1 setScale:0.5];
请注意蓝色精灵(按比例缩小)如何位于红色精灵的顶部,但您可以看出它的物理体仍然具有我告诉它的尺寸,并且它没有缩放。
所以很明显,缩小节点并不会缩小physicsBody。所以我的问题是,如果我必须手动完成,我该怎么做?
我尝试在缩放时将身体换成合适尺寸的身体,但是如果旧身体有关节等,事情就会变得非常复杂......如果我能以某种方式缩放现有身体会简单得多。