編輯:我深入Decker的鏈接(vector movement demo)非常有據可查的源代碼,我相當有信心,我可以找出它的一些代碼。謝謝大家的幫助:d如何在基於力的曲線路徑上移動元素?
我正在運動中的JavaScript遊戲。左箭頭鍵和右箭頭鍵旋轉飛船圖像,而向上箭頭則使其加速。使用旋轉度和速度,我可以用x
和y
計算運動,其中Math.sin()
和Math.cos()
,但這意味着船隻像汽車一樣處理。看到它應該是在太空中,我想讓船隻的旋轉只在加速時影響它的路徑,並考慮到船隻當前的運動。
我與它搞砸周圍很多,並試圖將運動成兩個獨立的力量,當前方向和速度和期望的方向,但似乎沒有任何甚至接近它應該的感覺。
很抱歉,如果這是混亂的,這裏的原始運動簡化代碼:
function main()
{
if(keyStates[39]) // Right arrow pressed?
ship.deg+=8;
if(keyStates[37]) // Left arrow pressed?
ship.deg-=8;
if(keyStates[38]) // Up arrow pressed?
{
if(ship.speed<16)
ship.speed+=1;
}
var shift=getXYshift(ship.deg,ship.speed);
function getXYshift(deg,speed)
{
return {x:Math.round(Math.cos((90-deg)*Math.PI/180)*speed*-1), y:Math.round(Math.sin((90-deg)*Math.PI/180)*speed)};
}
setTimeout(function(){ main() }, 50);
}
你使用的是矢量? – 2012-07-18 23:23:19
你指的是矢量圖形還是數組類容器? – Austen 2012-07-18 23:26:25
矢量圖形 – 2012-07-18 23:26:47