无论速度如何,我如何对每次碰撞施加相等的力? - Swift,Scenekit

时间:2016-10-03 01:28:36

标签: ios swift game-physics scenekit scnnode

每次碰到一个盒子时,我需要让我的球体反弹相同的距离和相同的速度。到目前为止,球将与第一个盒子碰撞并施加力以使其到达下一个盒子。随着时间的推移,球向下一个盒子反弹较小的距离,直到它不再到达它。如何制作它以使球在第一个盒子上朝第二个盒子反弹,然后一旦它撞到第二个盒子,从第一个盒子到第二个盒子行进的距离完全相同? SceneKit,Swift

1 个答案:

答案 0 :(得分:0)

我能想到两种方式:

夸大的人为结果值:

你可能会把恢复原状(试验和错误)弄得一团糟,直到找到一个有效的值,大部分时间都是如此。这将需要超过1.0,但不会更多。这将是不可靠的。帧速率或其他系统滞后的任何中断都会破坏它。可能,但缺乏充分。

...或

人为地诱导合适的力量:

将球的速度(使其静止)归零其中一个盒子,这是正常接触时的位置。然后找出产生"弹跳"的确切冲动量。一旦你知道,当球与另一个盒子碰撞时,将其速度归零,并施加相反的力。当它到达第一个方框时,再次为零速度,然后一遍又一遍地应用第一个找到的力。看起来像弹跳,每次都很完美,但是假的弹跳。

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