【发布时间】:2016-06-11 20:07:51
【问题描述】:
我想创建一个逼真的台球游戏并至少实现一些基本的球效果。我从头开始使用 SceneKit,此时我只是在研究适合它的技术。SceneKit 将是理想的。 我设法为侧旋和某种前旋实现了可接受的球效果。我正在努力解决的问题是后旋。我正在使用 applyForce 方法的 position 参数,但似乎仅靠它不会给我我正在寻找的结果。要么我遗漏了一些东西(我对物理的了解有限),要么 SceneKit 的物理模拟不足以满足我的需求。基本上我有一个半径为 1.5 的球体,我在 Y 分量上的位置矢量从 -1.5 变为 1.5,结果是发生碰撞时我击中的白球或球跳跃。
第一个屏幕截图显示了撞击的时刻,而后者显示了碰撞之后以及它是如何跳跃的。
两个球体是这样配置的
let sphereGeometry = SCNSphere(radius: 1.5)
sphere1 = SCNNode(geometry: sphereGeometry)
sphere1.position = SCNVector3(x: -15, y: 0, z: 0)
sphere2 = SCNNode(geometry: sphereGeometry)
sphere2.position = SCNVector3(x: 15, y: 0, z: 0)
给我带来这种效果的代码如下:
sphere1.physicsBody?.applyForce(SCNVector3Make(350, 0, 0), atPosition:SCNVector3Make(1.5, -0.25, 0), impulse: true)
我在该代码中试图做的是将球击打到略低于中心的位置。我如何得到 -0.25 是得到一个 10 度的角度并计算它的 sin 函数。然后我将它乘以球体半径,这样我就可以得到一个正好位于球体表面上的点。
【问题讨论】:
-
请缩小这个问题的范围,以便我们为您提供帮助。提供一个简洁的代码示例,也许还有几个屏幕截图。你做了什么?你看见什么了?相反,您的期望是什么?
-
感谢您的意见。我编辑了我的问题。
标签: scenekit