gpt4 book ai didi

ios - SceneKit - 修改节点面向方向的速度

转载 作者:行者123 更新时间:2023-11-30 12:12:19 27 4
gpt4 key购买 nike

我目前正在使用 SceneKit 开发 ARKit 游戏,但在控制和移动节点时遇到问题。游戏的布局非常简单,我有一个代表具有动态物理体的坦克的节点。我可以成功地将节点添加到 map ,但是我想使用操纵杆控制节点。

我正在尝试修改坦克的速度属性,以便当操纵杆被向上推时,坦克会沿其面向的方向向前移动。为此,我首先尝试简单地设置速度属性,如下所示:

t.physicsBody?.velocity = SCNVector3Make(0, 0, -0.15)

这导致坦克以所需的速度移动,但方向不正确。据我了解,-z 方向是向前的方向。苹果关于本地空间与世界空间的文档非常模糊,在网上浏览后我发现了这篇堆栈溢出文章 SceneKit physics add velocity in local space 。我尝试转换到父节点,但仍然没有达到预期的效果。我还尝试使用演示节点的物理体,该物理体已更新值,但两种方式都会导致抖动、不均匀和不可预测的运动。

我会使用力量,但是我希望 SCNode 能够进行非常直接且卡通化的运动,而无需加速。任何有助于理解正在发生的事情以及 SceneKit 处理运动的方式的帮助将不胜感激。

最佳答案

我猜你使用的是 iOS11,所以我认为你可以使用 SCNNode.convertVector 来达到你的目的。

let velocityInLocalSpace = SCNVector3(0, 0, -0.15)
let velocityInWorldSpace = t.presentation.convertVector(velocityInLocalSpace, to: nil)
t.physicsBody?.velocity = velocityInWorldSpace

关于ios - SceneKit - 修改节点面向方向的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898833/

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