我正在对射弹进行物理模拟,并且陷入了地面碰撞。我的地面是四边形,
我将点存储在数组中,所以我认为,如果我将发生碰撞的四边形并计算四边形的角度(在x和z方向上),则可以使用它来改变弹丸的速度。
这是我被困住的地方。我以为我应该找到最低和最高点,然后找到它们之间的向量,但这并不能给出所有方向的角度,这正是我想要的。我知道一定有这样做的方法,但是如何?
您想要的是四边形的法线。
Here's an answer that shows you how to get a quad's normal
获得法线后,需要计算collision's response的力。其方向是方形的法线,强度是弹丸在方形方向上施加的强度。通过使用弹丸速度和反四边形法线(Here's a wiki link for the dot product)]的点积来计算施加的力
响应向量应该是这个:
Vector3 responseForce = dot(projectile.vel, -1 * quad.normal) * quad.normal;
projectile.vel += responseForce;