2017-03-01 118 views
1

我正在创建与从画布顶部落下的对象(圆圈)相关的游戏。我有这些圆圈在x坐标上随机产生,然后以恒定速率下降。我试图编写一个碰撞算法,但似乎无法访问正在下降的圆的x坐标或宽度/高度。使用javascript从数组中的特定对象获取x和y坐标

这就是我如何创建圆并将它们放入数组中。 VAR弹=在我的代码的顶部已经

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); 
} 

这是我想访问x和圆的y坐标,并检索其宽度和高度,我的碰撞算法宣布[]的。我使用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

Shape一个的xy属性可用于翻译。在你的代码中,你将它们保留为默认值(0)并在Shape的画布中的特定位置绘制圆。

如果您想让x反映圆的位置,请考虑更改spawnEnemies以始终在形状的原点绘制圆,然后将其x设置为所需的位置。

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

您能否提供一个基本的代码示例。我想我不完全明白你的意思 – Jay2424

+0

好的|:添加了一些代码 – guest