在我目前使用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];
请看蓝色精灵(缩小后)位于红色精灵之上,但可以看出其物理体仍具有我所说的尺寸,并且没有缩放。很明显,缩小节点并不会缩小物理体。那么我的问题是,如果我必须手动执行缩放,该怎么做?我尝试在缩放时将身体与正确尺寸之一进行交换,但是如果旧身体具有关节等,则情况会变得非常复杂... 如果我可以以某种方式缩放现有身体,那将更简单。