1

当我编译时,我的英雄并没有碰到地板,而是在上方几个像素处停了下来。我想如果我追踪两个身体和它们各自的精灵,我会知道哪些不重合。

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);但没有用。虽然我相信问题就在那里,但要正确放置精灵。

4

1 回答 1

1

绘图不会影响对象的位置。在您的情况下,墙位于 0,0 并且您在 x:stage.stageWidth/2 , y: 500 处绘制,但这不会成为墙坐标,无论如何这些仍然是 0,0。

于 2014-07-22T16:03:11.443 回答