我在繞過如何計算2D空間中的移動圓的法線方面遇到了困難。我已經儘可能地計算出了物體的速度法線(方向速度),但這正是我的大學代數思維過熱的地方,我正在與我一起工作的二維圓圈中心點,半徑,速度和位置。XNA碰撞檢測 - Vector2.Reflect - 幫助計算圓形精靈的法線 - C#
最終,我想使用Vector2.Reflect方法來獲得一點這個練習中更真實的物理。
提前致謝。
編輯:添加了一些代碼嘗試建議(沒有用),可能會誤解建議。我在這裏使用籃球和棒球,因此使用籃球和籃球。我也有位置和速度,它被添加到位置來創建運動。
if ((Vector2.Distance(baseMid, basketMid)) < baseRadius + basketRadius)
{
Vector2 baseNorm = basketMid - baseMid;
baseNorm.Normalize();
Vector2 basketNorm = baseMid - basketMid;
basketNorm.Normalize();
baseVelocity = Vector2.Reflect(baseVelocity, baseNorm);
basketVelocity = Vector2.Reflect(basketVelocity, basketNorm);
}
basePos.Y += baseVelocity.Y;
basePos.X += baseVelocity.X;
basketPos.Y += basketVelocity.Y;
basketPos.X += basketVelocity.X;
basketMid = new Vector2((basketballTex.Width/2 + basketPos.X), (basketballTex.Height/2 + basketPos.Y));
baseMid = new Vector2((baseballTex.Width/2 + basePos.X), (baseballTex.Height/2 + basePos.Y));
我真的很感謝這個補充,但問題是代碼在這個問題上不起作用。我無法嘗試添加彌撒,直到我得到上述工作。 – user48202 2010-02-11 21:18:39
你能更具體嗎?它編譯失敗嗎?當球關閉時if語句不能觸發,或當球離得很遠時觸發if語句?球不能直線移動嗎?他們是否以一種奇怪的方式反彈? (這是C++,對不對?) – Beta 2010-02-12 21:39:59
這是C#,因爲它是XNA。 – kyoryu 2010-02-15 04:28:06