Положение тела и спрайта
Когда я компилирую, мой герой не касается пола, а останавливается на несколько пикселей выше. Я подумал, что если бы проследил оба тела и их соответствующие спрайты, я бы знал, какие из них не совпадают.
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);
но не сработало. Хотя я думаю, что проблема в правильном размещении спрайта.
1 ответ
Рисование не влияет на положение объекта. В вашем случае стена на 0,0, а вы рисуете на x:stage.stageWidth/2, y: 500, но это не станет координатами стены, они все равно равны 0,0.