В моем текущем проекте, использующем SpriteKit, у меня есть куча спрайтов, которые нужно масштабировать вверх и вниз независимо в разное время. Проблема в том, что когда я масштабирую узел, физическое тело не масштабируется, поэтому оно закручивает физику. Вот небольшой пример, который я поставил вместе для целей данного вопроса:SKPhysicsBody и [SKNode setScale:]
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];
Обратите внимание, как синий спрайт (уменьшено) сидит на вершине красной, но вы можете сказать, его физический организм еще имеет размер, который я ему сказал, и он не масштабировался.
Очевидно, что масштабирование узла не уменьшает физический порядок. Поэтому мой вопрос в том, нужно ли мне вручную это делать, как мне это сделать?
Я попытался поменять местами корпус с одним из правильных размеров при масштабировании, но тогда все становится действительно запутанным, если у старого тела есть суставы и т. Д. Это было бы намного проще, если бы я мог просто масштабировать существующее тело как-то.
Просто нет масштабирования форм тела в Box2D (используется SK) – LearnCocos2D