2017-03-01 11 views
1

私は、キャンバスの上から落ちるオブジェクト(円)に関するゲームの作成に取り組んでいます。私はこれらの円をランダムにx座標で生成してから、一定の割合で落とします。私は衝突アルゴリズムを書こうとしていますが、落ちているサークルのx座標や幅/高さにはアクセスできないようです。javascriptを使用して配列内の特定のオブジェクトからx座標とy座標を取得する

これは、円を作成して配列に配置する方法です。 VaRの発射は= []これは私が、円のx、y座標にアクセスしても、その幅と高さを取得しようとしています私の衝突アルゴリズムである

すでに私のコードの先頭に

function spawnEnemies() 
{ 
    var g1 = new createjs.Graphics(); 
    g1.beginStroke('white').beginFill('red').drawCircle(Math.floor(Math.random() * 650) + 50, 50, 20); 
    var e = new createjs.Shape(g1); 
    projectiles.push(e); 
    stage.addChild(e); 
} 
を宣言しました。私はconsole.logを使ってどの値が返されているかを確認しました。 p.xの場合、毎回値0が返され、p.widthはNaNを返します。私はなぜp.xとp.widthが動作していないのか混乱しています。

function checkCollision() 
{ 

for (i = 0; i < projectiles.length; i++) { 
    var p = projectiles[i]; 
    if((p.x + width) < ship.x) 
    { 
     hit = false; 
    } 
    else if(p.x > (ship.x + ship.image.width)) 
    { 
     hit = false; 
    } 
    else if(p.y > (ship.y + ship.image.height)) 
    { 
     hit = false; 
    } 
    else if((p.y + p.height) < ship.y) 
    { 
     hit = false; 
    } 
    else 
    { 
     hit = true; 
     console.log(p.x); 
    } 
} 

答えて

0

Shapexyプロパティは、それを翻訳するのに使用することができます。あなたのコードでは、それらをデフォルト(0)のままにして、Shapeのキャンバス内の特定の場所に円を描画します。

あなたはx円の場所を反映したい場合は、目的の場所にそのxを設定し、常に図形の原点に円を描くようにspawnEnemiesを変更することを検討。

g1.(...).drawCircle(0, 50, 20); 
var e = new createjs.Shape(g1); 
e.x = Math.(...); 
+0

基本的なコード例を教えてください。私はあなたが意味することを完全に理解していないと思います – Jay2424

+0

ok |:いくつかのコードを追加しました – guest

関連する問題