У меня есть обычный контроллер представления, и я хочу, чтобы показать другую ViewController, содержащий SCNViewPresent SCNView от другого ViewController
Если я использую presentViewController
или showViewController
его не работает. Он закончил немедленно. Я имею в виду, сцена не показывает.
Спасибо за ответы!
Извините за мой плохой английский
Позволяет описать свой проект. У меня есть ViewContrioller, который содержит главное меню, и у меня есть SCNView, который содержит падение кости. Это ViewController, который содержит SCNView:
self.scene = [SCNScene sceneNamed:@"dice.dae"];
self.scene.physicsWorld.gravity = SCNVector3Make(0, -16, 0);
self.scene.physicsWorld.speed = 2.5;
self.cameraNode = [SCNNode node];
self.cameraNode.camera = [SCNCamera camera];
[self.scene.rootNode addChildNode:self.cameraNode];
self.cameraNode.position = SCNVector3Make(0, 20, 20);
self.cameraNode.transform = SCNMatrix4Rotate(self.cameraNode.transform,M_PI/3.0, -5, 0, 0);
self.diceNode = [self.scene.rootNode childNodeWithName:@"dice" recursively:YES];
SCNPhysicsBody* diceBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:[SCNPhysicsShape shapeWithNode: self.diceNode options:nil ]];
self.diceNode.physicsBody = diceBody;
CGFloat zVelocity = arc4random()%10+5;
CGFloat xVelocity = arc4random()%5;
self.diceNode.physicsBody.velocity = SCNVector3Make(xVelocity, 0, -zVelocity);
CGFloat xAngVelocity = arc4random()%12 + 5;
CGFloat yAngVelocity = arc4random()%4 + 1;
CGFloat zAngVelocity = arc4random()% 13 + 9;
self.diceNode.physicsBody.angularVelocity = SCNVector4Make(-xAngVelocity, yAngVelocity, -zAngVelocity, 0.8);
self.diceNode.physicsBody.mass = 100.0;
self.diceNode.physicsBody.friction = 1;
SCNNode *field = [self.scene.rootNode childNodeWithName:@"field" recursively:YES];
field.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:[SCNPhysicsShape shapeWithNode:field options:nil]];
field.physicsBody.friction = 1;
self.scnView = (SCNView *)self.view;
self.scnView.frame = self.view.frame;
self.scnView.scene = self.scene;
self.scnView.allowsCameraControl = YES;
self.scnView.showsStatistics = YES;
self.scnView.backgroundColor = [UIColor blackColor];
self.scnView.delegate = self;
Я пытаюсь показать это ViewController из главного меню
DiceScene* dice = [[DiceScene alloc] init];
[self presentViewController:dice animated:YES completion:^{
NSLog(@"completion");
}];
И мой DiceScene does't шоу, это завершение сразу без ошибок.
Можете ли вы предоставить некоторый код, что у попробовали. –
поэтому 'DiceScene' является подклассом' UIViewController' (а не 'SCNScene'??). Как настроен 'self.view' (код или IBOutlet)? Вы уверены, что это не 'nil'? – mnuages
Если ViewController с DiceScene является начальным контроллером представления его работы, но если я его вызову из другого ViewController, это не сработает – DimaiOSDeveloper