Ich möchte ein Spiel mit Scenekit für iOS machen. Ich habe mit der SceneKit-Vorlage begonnen, die Xcode uns gibt (ein rotierendes Flugzeug). Dort ist bereits die Methode handleTap vorgesehen, um zu erkennen, ob der Benutzer auf den Bildschirm getippt hat. Ich möchte eine SCNBox erstellen und erkennen, ob der Benutzer darauf klickt, aber ich bin verwirrt, wie handleTap funktioniert. Muss ich die Box-Geometrie in handleTap hinzufügen? Kann mir bitte jemand zeigen, wie Sie eine Box in der Mitte des Bildschirms platzieren können, die erkennen kann, ob sie angeklickt wurde.Recgnize wenn Objekt in SceneKit angeklickt wurde
Hier handleTap Code:
- (void) handleTap:(UIGestureRecognizer*)gestureRecognize{
// retrieve the SCNView
SCNView *scnView = (SCNView *)self.view;
// check what nodes are tapped
CGPoint p = [gestureRecognize locationInView:scnView];
NSArray *hitResults = [scnView hitTest:p options:nil];
// check that we clicked on at least one object
if([hitResults count] > 0){
// retrieved the first clicked object
SCNHitTestResult *result = [hitResults objectAtIndex:0];
// get its material
SCNMaterial *material = result.node.geometry.firstMaterial;
// highlight it
//[SCNTransaction begin];
//[SCNTransaction setAnimationDuration:0.5];
// on completion - unhighlight
[SCNTransaction setCompletionBlock:^{
[SCNTransaction begin];
[SCNTransaction setAnimationDuration:0.5];
material.emission.contents = [UIColor blackColor];
[SCNTransaction commit];
}];
material.emission.contents = [UIColor redColor];
[SCNTransaction commit];
}
}
Was ist result.node? –
Nun, in der Vorlage haben Sie 'SCNHitTestResult * result = [hitResults objectAtIndex: 0];' und 'node' ist nur eine Eigenschaft auf' SCNHitTestResult ' – mnuages
Also muss ich eine neue Handle-Methode aufrufen, oder kann ich einfach implementieren die if-Anweisung in der Methode –