我正在做一个2D滚动大理石的项目。我可以检测出大理石何时撞到了盒子的角落,但是我无法弄清楚大理石在撞到角落时应该有什么行为。我需要弄清楚如何重新放置球,使其不与盒子重叠。通过框到框的碰撞,就像将框彼此相邻放置一样容易,但是对于圆和框,我不知道将大理石移动到哪里,因此看起来很逼真。

我不是问它如何反弹。我对trig有很好的理解。当您将大理石移向盒子时,它有时会与盒子重叠。我需要知道如何制作,这样它们就不再重叠了,但看起来仍然很现实。它不需要反弹(就像假设大理石的一部分质量无限大)。

最佳答案

看看Wikipedia上的这篇文章:Elastic Collision

您将需要在任何给定的曲面点上为2D对象创建曲面法线,如果您的盒子是完美的正方形,这将是有问题的,因为锋利的边缘没有法线。您将不得不对极端情况(无双关)进行特殊处理,并为其赋予表面法线,这是在拐角处连接的两条线的法线的平均值。

基本上,使用 vector 。

关于collision - 圆角碰撞行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11075292/

10-10 00:06