macos – SceneKit平滑的相机运动

macos – SceneKit平滑的相机运动,第1张

概述在SceneKit(OpenGL)中平滑相机移动的标准方法是什么? 手动改变x,y不够平滑,但使用CoreAnimation会产生“脉冲”运动. SceneKit上的文档看起来非常有限,所以任何例子都会受到赞赏,我现在正在这样做: - (void)keyDown:(NSEvent *)theEvent { int key = [theEvent keyCode]; int x = 在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];}
解决方法 我一直在试验这个.到目前为止我发现的最好的是记录内部状态的输入键的状态,由keyDown:和keyUp:修改,并运行NSTimer来应用它们.计时器使用点火之间的实际测量时间增量来确定相机移动的距离.这样不规则的时间不会产生太大的影响(我可以随时调用我的方法更新摄像机位置,而不必担心改变其移动速度).

但是,要使这种行为正确,需要做一些工作. keyDown:和keyUp:在游戏输入方面有一些令人讨厌的行为.例如,重复键.此外,即使您的视图失去焦点或应用程序转到后台,如果按键在转换过程中按下,它们也可能会触发.等等.不是不可克服的,但很烦人.

我还没有做的是添加加速和减速,我认为这将有助于感觉它是平滑的.否则感觉还不错.

总结

以上是内存溢出为你收集整理的macos – SceneKit平滑的相机运动全部内容,希望文章能够帮你解决macos – SceneKit平滑的相机运动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1017370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存