Was ist die Standardmethode für weiche Kamerabewegungen innerhalb von SceneKit (OpenGL)? Manuelles Ändern von x, y ist nicht glatt genug, doch die Verwendung von CoreAnimation erzeugt eine "pulsierende" Bewegung. Die docs auf SceneKit scheinen sehr begrenzt sein so dass alle Beispiele geschätzt würden, ich dies derzeit tun:SceneKit glatte Kamerabewegung
- (void)keyDown:(NSEvent *)theEvent {
int key = [theEvent keyCode];
int x = cameraNode.position.x;
int y = cameraNode.position.y;
int z = cameraNode.position.z;
int speed = 4;
if (key==123) {//left
x-=speed;
} else if (key==124) {//right
x+=speed;
} else if (key==125) {//down
y-=speed;
} else if (key==126) {//up
y+=speed;
}
//move the camera
[SCNTransaction begin];
[SCNTransaction setAnimationDuration: 1.0];
// Change properties
cameraNode.position = SCNVector3Make(x, y, z);
[SCNTransaction commit];
}
Versuchen Sie, die Geschwindigkeit auf einen kleineren Wert zu ändern und überprüfen Sie auch die 'animationTimingFunction' von SCNTransaction. Stellen Sie sicher, dass der Funktionsname von CAMediaTimingFunction kCAMediaTimingFunctionLinear lautet und nicht pulsiert. – TheAmateurProgrammer