帆布に宇宙船があります。速度がship.vx
あり、ship.vy
。キャンバスの境界線から30px離れたら、背景オブジェクトを船の反対方向に設定して移動しship.vx
ます。この瞬間、船はある地点で立ち往生しています。それはすべて良いです。ここで、左右()または上から下( )に移動しようとすると、 &がに設定されているポイントでスタックしているため、移動しません。ship.vy
0
stuck at top/bottom
stuck at left/right
vx
vy
0
反対方向に加速すると、その速度(約2)を選択するのに5秒ほどかかるので、基本的に同じポイントで5秒間です。
X軸から外れたとき、またはその逆に設定vy
しないようにしましたが、船はもう一方の軸でゆっくりと動き続けます。0
ですから、私が達成しようとしているのは、船が境界から30ピクセル離れたときにスタックすることですが、他の3方向に移動または加速しようとすると、スタックしていないふりをします。
メカニズムを知っている人はいますか?
ありがとう。
function stuckShip(){
if(
(ship.x - ship.width < 0) ||
(ship.x + ship.width > w) ||
(ship.y + ship.height > h) ||
(ship.y - ship.height < 0))
{
ship.vx = 0;
ship.vy = 0;
}
}
function againAndAgain(){
var angle = ship.rotation;
var x = Math.cos(angle);
var y = Math.sin(angle);
var ax = x*thrust,
ay = y*thrust;
ship.vx += ax;
ship.vy += ay;
stuckShip();
ship.draw(context);
}
document.addEventListener('keydown', function(e){
switch(e.keyCode){
case 38:
thrust = 0.35;
break;
case 37:
ship.rotation -= 3;
break;
case 39:
ship.rotation += 3;
break;
}
}