我正在努力创建一个与从 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);
}
}
最佳答案
Shape
的 x
和 y
属性可用于转换它。在代码中,您可以将它们保留为默认值 (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/