非常に経験の浅いプログラマーとして、プレイヤーがキャンバス上の特定の色と衝突したことを検出するゲームをコーディングしようとしています。座標が「player.x」と「player.y」で、寸法が 50x50 の黒い正方形があり、矢印キーを押すと移動します。また、キャンバスの別の場所に静止した赤い (255,0,0) 正方形があります。
以下の関数は、「プレーヤー」の四角形の周りに少し大きな四角形を取得し、その中に赤があるかどうかを調べることになっています。存在する場合は、アラートを送信します。問題は、これが機能していないように見えることです。
function collideTest(){
var canvas = document.getElementById("canvas");
var c = canvas.getContext("2d");
var whatColor = c.getImageData(player.x - 5, player.y - 5,60,60);
for (var i = 0; i < 3600; i++) {
if (whatColor.data[i] == 255) {
alert("red");
}
}
}
これが赤いピクセルを検出する最も効率的な方法ではないことはある程度認識していますが、ここに投稿する前にコードを簡素化したかったのです。機能に明らかに問題がありますか?
問題は、関数の呼び出し方法にある可能性があります。ユーザー入力を検出し、「プレーヤー」の正方形の座標を変更する別の関数の最後に呼び出されます。その関数は、すべてがキャンバスに描画される直前に呼び出されます。
助けてくれてありがとう!