在 SceneKit (SwiftUI) 中移动 .dynamic 类型的 physicsBody 的最佳方式
Best way to move a physicsBody of type .dynamic in SceneKit (SwiftUI)
在 SceneKit 中移动玩家对象的最佳方法是什么?
设置:
目前我有一个平坦的地面,上面有一个玩家对象。这两个对象都有一个 SCNPhysicsBody。地面类型为.static,播放器类型为.dynamic。
目标:
我想让玩家在地面上随机移动。
尝试过:
- SCNAction:似乎不能与 SCNPhysicsBody 协同工作。
- SCNTransaction:似乎根本没有动画 - 立即到达最终位置
- .applyForce:目前有效,但在我看来在执行和持续时间方面有点复杂和笨拙
还有其他移动游戏角色的方法吗?最佳做法是什么?
.dynamic physics body 不打算被 SceneKit 物理引擎本身以外的其他东西移动。这意味着,诸如重力、force-fields 或与其他物体或地板的碰撞将移动并控制 body。如果你试图影响这样的body,这很可能会搞砸。
物理上有一些类似 clearAllForces 或 resetTransform 命令的东西 body,它允许你结合 Actions 或 Transitions 做一些影响的事情,但这对整体来说是一个非常高的成本性能并且必须在每个帧上完成才能正常工作。不建议连续玩游戏。
尝试让您的播放器使用.kinematic physics body。 Apple 几年前发布了所谓的 FOX 演示应用程序,您可以找到它 here。尝试抓住游戏控制。模仿真实的动态物理是一个很好的方法body。祝你好运。
在 SceneKit 中移动玩家对象的最佳方法是什么?
设置:
目前我有一个平坦的地面,上面有一个玩家对象。这两个对象都有一个 SCNPhysicsBody。地面类型为.static,播放器类型为.dynamic。
目标:
我想让玩家在地面上随机移动。
尝试过:
- SCNAction:似乎不能与 SCNPhysicsBody 协同工作。
- SCNTransaction:似乎根本没有动画 - 立即到达最终位置
- .applyForce:目前有效,但在我看来在执行和持续时间方面有点复杂和笨拙
还有其他移动游戏角色的方法吗?最佳做法是什么?
.dynamic physics body 不打算被 SceneKit 物理引擎本身以外的其他东西移动。这意味着,诸如重力、force-fields 或与其他物体或地板的碰撞将移动并控制 body。如果你试图影响这样的body,这很可能会搞砸。
物理上有一些类似 clearAllForces 或 resetTransform 命令的东西 body,它允许你结合 Actions 或 Transitions 做一些影响的事情,但这对整体来说是一个非常高的成本性能并且必须在每个帧上完成才能正常工作。不建议连续玩游戏。
尝试让您的播放器使用.kinematic physics body。 Apple 几年前发布了所谓的 FOX 演示应用程序,您可以找到它 here。尝试抓住游戏控制。模仿真实的动态物理是一个很好的方法body。祝你好运。