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

标签 javascript arrays collision-detection

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

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

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

最佳答案

Shapexy 属性可用于转换它。在代码中,您可以将它们保留为默认值 (0),并在形状 Canvas 中的特定位置绘制圆圈。

如果您希望 x 反射(reflect)圆的位置,请考虑更改 spawnEnemies 以始终在 Shape 的原点绘制圆,然后设置其 x 到所需位置。

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

关于javascript - 使用javascript从数组中的特定对象获取x和y坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542524/

相关文章:

javascript - Phonegap xmlhttprequest 不返回 xml 数据

javascript - 在新标签页中打开 : how is 'Bing' doing this? (IE9)

java - 将记录存储在 for 循环数组中并显示它们

javascript - jQuery '' 映射 '' : How to iterate through an array, 使用变量值

arrays - 如何在 Swift 中查找列表项的索引?

actionscript-3 - 如何以干净、可管理的方式跟踪所有 Box2D 碰撞?

javascript - 视频覆盖的 Bootstrap 导航栏 - 如何用不透明背景覆盖它?

javascript - 哪个是我的 JavaScript 插件的最佳安全技术

javascript - CannonJS 锁定特定轴上的旋转

java - 如何在 Java 中高效地编写大量/多个敌人的生成和碰撞检测代码