私はクラス プロジェクトを作成しています (HTML5 キャンバスを使用して Frogger ゲームを作成する必要があります)。衝突検出、移動などのさまざまなことを支援するオブジェクトがたくさんあります。
下のオブジェクトはその 1 つです。各ビューには、そのフレームが渡されたフレームと衝突しているかどうかを確認する関数呼び出し hitTest を含む Frame オブジェクトが含まれています。何らかの理由this.lr
で、ゲームの開始時に最初に設定された値を保持していて、変更された原点に基づいて更新されない理由がわかりません。
function Frame(origin, size) {
this.origin = utility.checkPoint(origin);
this.size = utility.checkSize(size);
var self = this;
this.lr = (function () {
return utility.checkPoint(new Point(self.origin.x + self.size.width, self.origin.y + self.size.height));
}());
this.tr = (function () {
return utility.checkPoint(new Point(self.origin.x + self.size.width, self.origin.y));
}());
this.ll = (function () {
return utility.checkPoint(new Point(self.origin.x, self.origin.y + self.size.height));
}());
/* Returns true if the two frames share any common pixels */
this.hitTest = function (frame) {
var isInXBounds = function (p) {
return (p.x >= self.origin.x && p.x <= self.tr.x);
};
var isInYBounds = function (p) {
return (p.y >= self.origin.y && p.y <= self.lr.y);
};
var isContained = function (p) {
return (isInXBounds(p) && isInYBounds(p));
};
return isContained(frame.origin) || isContained(frame.tr) || isContained(frame.lr) || isContained(frame.ll);
};
}