2016-07-25 6 views
0

私は基本的にキャンバスに2つの壁を作りました。一番上に1つ、一番下に1つ。私のプレーヤーはマウスで制御されています。プレーヤーを壁に通さないようにする方法を知りたかったのです。キャンバスで衝突検知後のプレーヤーの動きを停止

は、ここでは、2つのオブジェクト間の一般的な衝突のための機能です:

function collides(a, b) { 
    var val = false; 

    val = (a.x < b.x + b.width) && 
    (a.x + a.width > b.x) && 
    (a.y < b.y + b.height) && 
    (a.y + a.height > b.y); 

    return val;   
} 

は、ここで衝突検出を検出したコードです:

if (collides(player, block)){ 
    //I don't know what goes here. 
} 

任意の助けをいただければ幸いです。

答えて

0

プレーヤーの位置を変更してください。プレーヤーのyの位置は、常に上部と下部の壁の間になるように固定してください。あなたのMouseMoveハンドラ(またはどこプレイヤーがマウスで再配置される)で

// reposition the player as you already do 
... 

// and clamp the player to stay below the top wall 
if(player.y < wall.y+wall.height){ player.y = wall.y+wall.height); 

// and clamp the player to stay above the bottom wall 
if(player.y+player.height > wall.y){ player.y = wall.y-player.height); 
+1

ありがとう!私はそれを働かせることができました。 –