我目前正在使用ARKit开发一个SceneKit游戏,在控制和移动节点时遇到了困难。游戏的布局很简单,我有一个代表坦克的节点,它有一个动态的物理体。我可以成功地将节点添加到地图中,但是我希望使用操纵杆来控制节点。
我试图修改坦克的速度属性,以便当操纵杆向上推时,坦克朝它所面对的方向前进。为了做到这一点,我首先尝试简单地将速度属性设置为这样:
t.physicsBody?.velocity = SCNVector3Make(0, 0, -0.15)这导致坦克以预期的速度移动,但方向不正确。据我所知,-z方向是面向前方的方向。苹果公司关于本地和世界空间的文档非常模糊,在网上查看之后,我发现了这篇堆栈溢出的文章SceneKit physics add velocity in local space。我已经尝试转换到父节点,它仍然没有达到预期的效果。我还尝试使用表示节点的物理体,它更新了值,但这两种方法都会引起紧张、不一致和不可预测的运动。
我会使用武力,但我希望SCNode有一个非常即时和卡通的运动,没有加速。任何帮助理解什么是正在发生和关于SceneKit的方式处理移动将不胜感激。
发布于 2017-08-27 07:53:13
我想您使用iOS11,所以我认为您可以使用SCNNode.convertVector来达到您的目的。
let velocityInLocalSpace = SCNVector3(0, 0, -0.15)
let velocityInWorldSpace = t.presentation.convertVector(velocityInLocalSpace, to: nil)
t.physicsBody?.velocity = velocityInWorldSpacehttps://stackoverflow.com/questions/45898833
复制相似问题