弹跳球边框故障
Bouncing Ball Border Glitch
我正在制作一个弹跳球模拟,它使用 0.98 作为重力(工作正常),但有时球会卡在墙上(顶部、底部、左侧或右侧)并且它会有0 xspeed 和正常的 yspeed(反之亦然)。我一直在尝试通过限制速度来调整它,但这似乎并不像我希望的那样有效。我目前将其设置为每次球在地板上连续 100 帧后重置。这是我在 p5.js 上的代码的 link:https://editor.p5js.org/Mavhawk64/sketches/5ks6M4wD0
因为有时候粒子离边界太远了,你反转之后,下一个tick还是在边界外,你再反转,这样就没完没了。
选项 1:
你需要能够检查并设置一些标志,当你超出盒子的边界时,你只会反转一次速度方向。一旦您再次进入框内,您应该在下次发生这种情况时重置此标志。
选项 2:
您可以区分边界,并根据击中的边界相应地设置速度。
这意味着如果你碰到顶部边界,你将 ySpeed 设置为 (-1) * abs(ySpeed)
或者,如果您触及底部边界,则将 ySepeed 设置为 abs(ySpeed)。垂直边框也一样。这样速度就不会在每个滴答声中反转。
我正在制作一个弹跳球模拟,它使用 0.98 作为重力(工作正常),但有时球会卡在墙上(顶部、底部、左侧或右侧)并且它会有0 xspeed 和正常的 yspeed(反之亦然)。我一直在尝试通过限制速度来调整它,但这似乎并不像我希望的那样有效。我目前将其设置为每次球在地板上连续 100 帧后重置。这是我在 p5.js 上的代码的 link:https://editor.p5js.org/Mavhawk64/sketches/5ks6M4wD0
因为有时候粒子离边界太远了,你反转之后,下一个tick还是在边界外,你再反转,这样就没完没了。 选项 1:
你需要能够检查并设置一些标志,当你超出盒子的边界时,你只会反转一次速度方向。一旦您再次进入框内,您应该在下次发生这种情况时重置此标志。
选项 2:
您可以区分边界,并根据击中的边界相应地设置速度。 这意味着如果你碰到顶部边界,你将 ySpeed 设置为 (-1) * abs(ySpeed) 或者,如果您触及底部边界,则将 ySepeed 设置为 abs(ySpeed)。垂直边框也一样。这样速度就不会在每个滴答声中反转。