2015-10-06 84 views
0

我正在研究彈丸的物理模擬,並且我被困在地面碰撞上。我有一個四邊形的地面,like this3D空間中四角的角

我有點存儲在一個數組中,所以我認爲,如果我把碰撞發生的四邊形和計算四邊形的角度(在x和z方向)I然後可以使用它來改變拋射體的速度。

這是我卡住的地方。我想我應該找到最低點和最高點,然後找到它們之間的矢量,但是這不會給出所有方向上的角度,這正是我想要的。我知道一定有辦法做到這一點,但是怎麼做?

回答

1

你想要的是四元組的法線。

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;