Phương pháp chuẩn cho chuyển động camera mượt mà trong SceneKit (OpenGL) là gì? Thay đổi thủ công x, y không đủ mượt mà, nhưng sử dụng CoreAnimation tạo ra chuyển động "rung". Các tài liệu trên SceneKit dường như rất hạn chế vì vậy bất kỳ ví dụ sẽ được đánh giá, tôi đang làm điều này:SceneKit chuyển động camera mượt mà
- (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];
}
Thử thay đổi tốc độ thành giá trị nhỏ hơn và cũng kiểm tra 'animationTimingFunction' của SCNTransaction. Đảm bảo tên hàm của 'CAMediaTimingFunction' là kCAMediaTimingFunctionLinear để nó không bị xung. – TheAmateurProgrammer