使用javascript从数组中的特定对象获取x和y坐标

时间:2017-03-01 21:36:21

标签: javascript arrays collision-detection

我正在创建一个与从画布顶部落下的对象(圆圈)有关的游戏。我让这些圆圈在x坐标处随机生成,然后以恒定速率下降。我正在尝试编写一个碰撞算法,但似乎无法访问正在下降的圆的x坐标或宽度/高度。

这就是我创建圆圈并将它们放入数组的方式。 var projectiles = []已在我的代码顶部声明

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

1 个答案:

答案 0 :(得分:0)

x的{​​{1}}和y属性可用于翻译它。在您的代码中,您将它们保留为默认值(0)并在Shape的画布中的特定位置绘制圆圈。

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

x