当我编译时,我的英雄并没有碰到地板,而是在上方几个像素处停了下来。我想如果我追踪两个身体和它们各自的精灵,我会知道哪些不重合。
trace("Hero: ", hero.position.y, "/", heroSprite.y);
trace("Floor: ", floor.position.y, "/", floorSprite.y);
我得到以下信息,
英雄:470.2(...) / 470.2
楼层:0 / 0
此外,在以下情况下,地板位置 0 在其 y 属性中如何:
createWall(stage.stageWidth/2, 500, 100, 30); //(y = 500)
我读到虽然颈背身体的“注册点”在中间,但精灵在左上角,所以当给精灵提供相同的身体 x 和 y 时,它不会匹配。下面的精灵将不在位置。
public function createWall(x:Number, y:Number, width:Number, height:Number):void
{
wall.shapes.add(new Polygon(Polygon.rect(x, y, width, height)));
wall.space = space;
wallSprite.graphics.beginFill(0x000000);
wallSprite.graphics.drawRect(x, y, width, height);
wallSprite.graphics.endFill;
addChild(wallSprite);
wall.userData.sprite = (wallSprite);
addChild(wall.userData.sprite);
}
我试过wallSprite.graphics.drawRect(-width/2, -height/2, width, height);
但没有用。虽然我相信问题就在那里,但要正确放置精灵。