所以我有一个通常工作的碰撞球的系统,除了当他们碰撞相似的方向,相隔不到90度。球碰撞问题
这是因为上述球试图碰撞黄线,其是假想碰撞面,但它发送它从错误的方向,并且它“跟随”其他球。为碰撞的一般算法是:
dot = direction.surface;
parallel = surface * dot;
perpendicular = direction - parallel;
direction = perpendicular - parallel;
哪个否定垂直于表面法线平行于表面法线,其垂直于碰撞平面的方向的分量,并且部分是不变的。
有没有人知道这个问题的解决办法?我做错了什么?
编辑:所以现在我说:
average = (ball1.velocity + ball2.velocity)/2;
ball1.velocity -= average;
ball2.velocity -= average;
做上面的计算之前和之后:
ball1.velocity += average;
ball2.velocity += average;
要获得正确的参照系,根据@贝塔的答案。现在的问题是球的速度没有得到保持,因为它们都具有相同的速度和质量,但是在碰撞之后它们是不同的。我不认为这应该发生,或者是吗?
此方法适用于动量中心框架。这是否清理了一些东西,还是我们应该多解释一下? – Beta 2012-03-01 02:06:32
你介意解释一下吗?网上有这么多的例子使用这种方法,但它并不总是工作? – slartibartfast 2012-03-01 02:11:48
这是一个长时间的解释。您是否熟悉改变参考框架的想法? – Beta 2012-03-01 02:28:30