Я делаю игру с помощью SpriteKit, а в главном меню этой игры находится SK3DNode
, который содержит SCNScene
, предназначенный для размещения вращающейся планеты. Я установил его таким образомSCNSphere не вращается правильно
//create scene
SCNScene *planetScene = [[SCNScene alloc] init];
SCNSphere *planet = [SCNSphere sphereWithRadius:2.0];
planet.firstMaterial.diffuse.contents = [UIImage imageNamed:@"Planet_2_d.png"];
SCNNode *plNode = [SCNNode nodeWithGeometry:planet];
[planetScene.rootNode addChildNode:plNode];
//animate planet
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"rotation"];
rotationAnimation.toValue = [NSValue valueWithSCNVector4:SCNVector4Make(0, 1, 0, M_PI * 2)];
rotationAnimation.duration = 6; // One revolution in ten seconds.
rotationAnimation.repeatCount = FLT_MAX; // Repeat the animation forever.
[plNode addAnimation:rotationAnimation forKey:nil]; // Attach the animation to the node to start it.
//create and add sprite kit node
SK3DNode *planetNode = [[SK3DNode alloc] initWithViewportSize:CGSizeMake(125, 125)];
planetNode.scnScene = planetScene;
planetNode.position = CGPointMake(loadGameButton.position.x - 200, CGRectGetMidY(self.frame));
planetNode.autoenablesDefaultLighting = YES;
planetNode.playing = YES;
id s1 = [planetNode valueForKey:@"_scnRenderer"];
NSLog(@"%@", s1);
[self addChild:planetNode];
Это работает, как и планировалось, за исключением того, что планета больше вращается. Помимо поворота, он также увеличивает и уменьшает масштаб. Я не вижу ничего в приведенном выше коде, который заставит его вести себя таким образом. Как я могу заставить планету просто вращаться, а не увеличивать масштаб?
Вы пытались добавить камеру в 'SCNScene'? – rickster