我目前正在研究一种与火箭船四处移动并且物体(圆圈)从顶部落下的游戏。这个游戏的目标是在物体落入屏幕时不会碰到物体。我在编写碰撞算法时遇到了问题。
我声明var hit = false;在我的代码顶部 我还将所有圆圈放入一个叫做射弹的阵列中。
我相信我的逻辑是正确的,但我发现在调用p.width或ship.width时它会返回NaN。我尝试过使用offsetWidth,但也没有用。我想知道如何获得对象的宽度
底部的else语句只是检查.width是否返回正确的数字。一旦我开始工作,它将被移除并替换为碰撞算法的最后部分。
function checkCollision()
{
for (i = 0; i < projectiles.length; i++) {
var p = projectiles[i];
if((p.x + p.width) < ship.x)
{
hit = false;
}
else if(p.x > (ship.x + ship.width))
{
hit = false;
}
else if(p.y > (ship.y + ship.height))
{
hit = false;
}
else if((p.y + p.height) < ship.y)
{
hit = false;
}
else {
console.log(ship.x + ship.width);
}
答案 0 :(得分:0)
在createjs.Bitmap
的文档中,.width
和.height
不存在属性。而是访问已定义宽度和高度属性的.image (HTMLImageElement)
属性:ship.image.width
和ship.image.height
。
答案 1 :(得分:0)
如果您的对象是EaselJS位图,则可以使用var bounds = ship.getBounds();
var w = bounds.width;
检索物理大小。此方法适用于某些 EaselJS显示对象(即,不是形状,精度因文本而异)。
.image
注意:
getBounds
,并获取宽度/高度,但它将是图像的原始大小,因此如果您转换位图实例,或任何对于父容器,值将是错误的。 var p = new createjs.Shape();
p.graphics.beginFill("red").drawCircle(0,0,20);
p.setBounds(new createjs.Rectangle(-20,-20,40,40));
将考虑规模转换(如果存在)对于你的射弹,如果它是一个形状,边界将始终为空,但你可以手动设置它们,如果你知道它们,它们将被正确计算/转换:
.width
以下是有关没有.height
或json_encode()
的原因的一些信息:http://blog.createjs.com/update-width-height-in-easeljs/