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

使用javascript从数组中的特定对象获取x和y坐标,javascript,arrays,collision-detection,Javascript,Arrays,Collision Detection,我正在制作一个游戏,它与从画布顶部掉落的物体(圆圈)有关。我让这些圆在x坐标下随机生成,然后以恒定速率下降。我试图编写一个碰撞算法,但似乎无法访问正在下落的圆的x坐标或宽度/高度 这就是我如何创建圆并将它们放入数组的方式。var projectles=[]已经在我的代码顶部声明了 function spawnEnemies() { var g1 = new createjs.Graphics(); g1.beginStroke('white').beginFill('red').

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

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

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);
    }
}
函数checkCollision()
{
对于(i=0;i(ship.x+ship.image.width))
{
命中=错误;
}
否则如果(p.y>(ship.y+ship.image.height))
{
命中=错误;
}
否则,如果((p.y+p.H)<船舶y)
{
命中=错误;
}
其他的
{
命中=真;
控制台日志(p.x);
}
}

可以使用
形状的
x
y
属性对其进行转换。在代码中,您可以将它们保留为默认值(0),并在形状画布中的特定位置绘制圆

如果你想<代码> x/COD>反映圆的位置,考虑改变<代码>产卵敌人<代码>,总是在形状的原点上画圆,然后将它的<代码> x <代码>设置到期望的位置。

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

可以使用
形状的
x
y
属性对其进行转换。在代码中,您可以将它们保留为默认值(0),并在形状画布中的特定位置绘制圆

如果你想<代码> x/COD>反映圆的位置,考虑改变<代码>产卵敌人<代码>,总是在形状的原点上画圆,然后将它的<代码> x <代码>设置到期望的位置。

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

你能提供一个基本的代码示例吗?我想我不完全理解你的意思。你能提供一个基本的代码示例吗?我想我不完全理解你的意思