我試圖在3d環境中爲玩家角色實現一些基本動作,但我正在努力應對一些基礎知識。速度之間的平滑過渡
當按下任意一個移動鍵時,角色應該加速直到他在移動方向上達到一定的速度。很簡單。
問題是,應該從他的舊速度平滑過渡到運動速度。
如果球員向前移動,但他以前的速度推倒了他,他應該明顯停下來,然後開始正常移動。
如果玩家向前移動,但他以前的速度向右轉20度,速度更快,速度方向應接近他的移動方向,但大部分舊速度應保持不變。
很遺憾,關於如何構建fps遊戲的移動系統,網絡上沒有太多的信息,所以我現在有點卡住了。向正確的方向微調將不勝感激。
UPDATE
我想我會更加具體。運動的實際執行不是問題。
假設我的角色在沒有旋轉的情況下直線前進。他的最大移動速度是每秒120個單位。沒有外力,他應該加速直到他達到那個速度。一旦他達到那個速度,他的速度就是Vector(1,0,0)* 120(假設'forward'是x軸)
現在我們添加一個Vector的外力(500,60,0)。角色當前移動方向(矢量(1,0,0))上的力的速度爲500,因此比他的最大移動速度快,因此他不應該加速。
對於這個例子,這不是一個問題,但假設角色的移動方向是Vector(0.827846,0.560955,0)而外部力是Vector(181,760,0)。我如何才能獲得相對於他目前運動方向的力量?
(當我說「速度」,我指的是速度的長度)
因此,將新的加速度添加到舊的速度(使用正確的時間步長)。怎麼了? – Thomas
也許你會在你的問題標題/標籤中想要關於'3d'和'遊戲物理'的東西。 – xtofl
「沒有太多的信息」.... https://www.google.be/search?q=game+physics+tutorial&oq=game+physics&aqs=chrome.1.69i57j0l5.4230j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#es_sm=93&espv=210&q=game%20physics %20tutorial%203d – xtofl