作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要让我的球体每次与盒子碰撞时以相同的距离和相同的速度反弹。截至目前,球将与第一个盒子碰撞,并施加力使其到达下一个盒子。随着时间的推移,球会向下一个盒子弹跳更短的距离,直到不再到达它。如何使球在第一个盒子上弹向第二个盒子,然后一旦击中第二个盒子,就以与从第一个盒子到第二个盒子完全相同的距离移动?场景套件, swift
最佳答案
我能想到的两种方法:
您可以尝试恢复原状(反复试验),直到找到一个在大多数情况下都有效的值。该值需要大于 1.0,但也不能超过 1.0。而且它将是不可靠的。帧速率的任何中断或其他系统延迟都会毁掉它。有可能,但缺点十足。
或者...
将球在其中一个盒子上的速度归零(使其静止),即它通常接触时的位置。然后找到产生“弹跳”的确切脉冲量。一旦你知道了这一点,当球与另一个盒子碰撞时,将其速度归零,并施加相反的力。当它到达第一个盒子时,再次为零速度,并应用第一个发现的力......一遍又一遍。看起来像弹跳,每次都完美运行,但实际上是假弹跳。
警告:由于 SpriteKit 和 SceneKit 物理特性(不是 delta-d)的不可靠特性,您甚至可能希望每次都将球重新定位到理想的起始点。以防万一发生一些漂移。
关于ios - 无论速度如何,如何对每次碰撞施加相等的力? - swift ,场景套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823429/
我是一名优秀的程序员,十分优秀!