2016-11-02 12 views
0

SCNSceneにあるSCNSphereのプロパティにアクセス/変更しようとしています。私はシーンが "spaceScene.scn"というファイルとしてあらかじめ設定されています。私は材料SCNSphere地球プロパティを読ん乗り越えることができないようなSCNSphereプロパティへのアクセス

self.sceneView.scene = [SCNScene sceneNamed:@"spaceScene.scn"]; 
self.sceneView.allowsCameraControl = YES; 
self.sceneView.scene.rootNode.camera = [SCNCamera camera]; 
SCNSphere *earth = (SCNSphere *)[self.sceneView.scene.rootNode childNodeWithName:@"earth" recursively:NO]; 

NSMutableArray *materials = earth.materials; 
NSLog(@"Materials of earth from scene: %@", materials); 

としてシーンをロードしています。私は、インスタンスのエラーを取得しておいてください。

-[SCNNode materials]: unrecognized selector sent to instance 0x1701c5550

は、この問題で少し愚かな感じ誰かがどれだけ球のプロパティにアクセスする方法を教えてください?ありがとう

答えて

2

SCNSphereは、SCNNodeから継承しています。代わりに、球体になるノードのgeometryを取得する必要があります。

2

earthオブジェクトを作成するときに、SCNNodeSCNSphereをキャスティングしています。

ドキュメントを参照すると、使用している関数がSCNNodeを返しています。鋳造で

- (SCNNode *)childNodeWithName:(NSString *)name 
        recursively:(BOOL)recursively; 

は、あなたは、オブジェクトがSCNSphereであること、しかし、それは偽物ではないことができます。 materialsメッセージをオブジェクトに送信すると、認識できないセレクタであるSCNNodeであるため、オブジェクトがクラッシュします。

強制的にキャストしないで、あなたのオブジェクトを取得するための別の方法を探すことをお勧めします。

+0

残念ながら、これを掲載した直後のことを私は理解しています。明らかに、SCNNodeのマテリアルが問題であると私に話していることから、それは球ではないことがわかります。他の方法でオブジェクトを取得する方法がわからない最終的には、SKSceneをサーフェスとして設定しようとしているため、球面上のオブジェクトを追加したり操作したりすることができます –

関連する問題