手动改变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平滑的相机运动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)