ios - 无论速度如何,如何对每次碰撞施加相等的力? - swift ,场景套件

标签 ios swift game-physics scenekit scnnode

我需要让我的球体每次与盒子碰撞时以相同的距离和相同的速度反弹。截至目前,球将与第一个盒子碰撞,并施加力使其到达下一个盒子。随着时间的推移,球会向下一个盒子弹跳更短的距离,直到不再到达它。如何使球在第一个盒子上弹向第二个盒子,然后一旦击中第二个盒子,就以与从第一个盒子到第二个盒子完全相同的距离移动?场景套件, swift

最佳答案

我能想到的两种方法:

夸大的、人为的赔偿值(value):

您可以尝试恢复原状(反复试验),直到找到一个在大多数情况下都有效的值。该值需要大于 1.0,但也不能超过 1.0。而且它将是不可靠的。帧速率的任何中断或其他系统延迟都会毁掉它。有可能,但缺点十足。

或者...

人工诱导正确的力量:

将球在其中一个盒子上的速度归零(使其静止),即它通常接触时的位置。然后找到产生“弹跳”的确切脉冲量。一旦你知道了这一点,当球与另一个盒子碰撞时,将其速度归零,并施加相反的力。当它到达第一个盒子时,再次为零速度,并应用第一个发现的力......一遍又一遍。看起来像弹跳,每次都完美运行,但实际上是假弹跳。

警告: 由于 SpriteKit 和 SceneKit 物理特性(不是 delta-d)的不可靠特性,您甚至可能希望每次都将球重新定位到理想的起始点。以防万一发生一些漂移。

关于ios - 无论速度如何,如何对每次碰撞施加相等的力? - swift ,场景套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823429/

相关文章:

ios - 分配给 nowPlayingInfo 后,MPNowPlayingInfoCenter 不更新任何信息

iOS Swift 3 为同步和异步请求创建 URLSession 扩展

ios - KeychainItemWrapper 奇怪的行为,相同项目的现有/不存在项目错误

ios - 在 Storyboard中使用 Swift 嵌套类作为 UIViewController

swift - 将捏合手势方法的缩放限制为屏幕的高度

math - 圆弧球的碰撞检测

ios - SKPhysicsJointPin 引脚位置

java - 使角色绕圈移动

ios - NSNotification 找不到选择器

iphone - 如何覆盖 UISearchBar 中的取消按钮