次の行を使用して Collidable クラスから「継承」するゲームの Player クラスの Javascript オブジェクトを作成しました。
Player.prototype = new Collidable(50, 50, 70);
この Collidable クラスには、次のようなコードでインスタンス化される Vector クラスのインスタンスがあります。
this.pos = new Vector(x, y) || new Vector(50, 50);
私の問題は、新しい Collidable オブジェクトを問題なく作成できることです。内部のベクトルには、new Collidable(x, y, diameter)
パーツの最初の 2 つの引数で指定された x と y の値が含まれます。ただし、新しいプレーヤーが作成されると ( current = new Player();
)、ベクトルの x と y の値は NaN になります。
以下に、Collidable コンストラクターと Player コンストラクターのコードを含めました。
衝突可能:
Collidable = function Collidable(x, y, d){
this.pos = new Vector(x, y) || new Vector(50, 50); // Position of centre
this.diam = d || 50; // Diameter
this.col = new Color().randomRGB(); // For debug
}
// More functions below
プレーヤー:
Player = function Player(){
this.health = 100;
this.facing = 0;
this.sprites = new Image();
this.sprites.src = "./npc-oldman1.png";
this.spriteNo = 0;
this.moveSpeed = 2;
}
Player.prototype = new Collidable(50, 50, 70);
// More functions below
これはこの質問に関連していると思われますが、何が問題なのかを突き止めることができませんでした。
私の完全なコードはこちらで入手できます。すべきことは、マウスがクリックした場所に移動する老人の画像を表示することです ((50, 50) (プレーヤーが作成された場所) で最初に点滅するか、手動で pos 値を変更したときに点滅します)。 . Collisions クラスを追加する前に、コードを動作させました。
前もって感謝します。