在我目前使用SpriteKit的项目中,我有一堆精灵需要在不同时间独立地放大和缩小.问题在于,当我缩放节点时,物理体不会随之缩放,因此它会破坏物理学.这是我为了这个问题而放在一起的一个小例子:
CGSize objectSize = CGSizeMake(100,100); self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(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];
注意蓝色精灵(按比例缩小)如何位于红色精灵之上,但你可以告诉它的物理体仍然有我告诉它的尺寸,它没有缩放.
很明显,缩小节点不会缩小物理体.所以我的问题是如果我必须手动完成它,我该怎么做呢?
我尝试在缩放时用一个合适的尺寸交换身体,但是如果旧的身体有关节等,那么事情会变得非常复杂……如果我能以某种方式扩展现有的身体,那就简单多了.