gpt4 book ai didi

macos - SceneKit 平滑相机移动

转载 作者:行者123 更新时间:2023-12-03 16:08:38 24 4
gpt4 key购买 nike

SceneKit (OpenGL) 中相机平滑移动的标准方法是什么?手动更改 x,y 不够平滑,但使用 CoreAnimation 会创建“脉冲”运动。 SceneKit 上的文档似乎非常有限,因此任何示例将不胜感激,我目前正在这样做:

- (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];
}

最佳答案

为了最大限度地减少脉冲运动(由于按键重复),您可以使用“easeOut”计时函数:

//move the camera
[SCNTransaction begin];
[SCNTransaction setAnimationDuration: 1.0];
[SCNTransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
// Change properties
cameraNode.position = SCNVector3Make(x, y, z);
[SCNTransaction commit];

也就是说,这里最好的做法可能是自己管理一个目标位置(向量3)并在每一帧更新相机的位置以顺利到达该目标。

关于macos - SceneKit 平滑相机移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com