编辑:我在 Decker 的链接(矢量移动演示)中深入研究了文档非常完善的源代码,并且我相当有信心可以解决其中的一些代码。谢谢大家的帮助: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);
}