границы и события актера libgdx

Используя box2d, у меня есть статическая земля внизу экрана и ящик, падающий сверху. Пробуя события актера, земля запускает событие, а падающий ящик - нет.

Создание актера: (Статическая земля заполняет всю ширину экрана и высоту 20 пикселей снизу. Я пытался использовать setPosition, но результат был неправильным.)

box = new MyActor(world);
box.setOrigin(Gdx.graphics.getWidth() / 2, 200);
box.makeBody(20, 20, true); //defines body and fixture
stage.addActor(a);

Я предполагаю, что проблема в границах актера. Я установил это так:

setHeight(h); //the w and h are arguments from makeBody() method.
setWidth(w);
setBounds(0, 0, getWidth(), getHeight()); 

Любые идеи?


person tambalolo    schedule 23.05.2013    source источник


Ответы (1)


Вы устанавливаете позицию на 0,0 в вашем setBounds. Таким образом, событие будет где-то в левом верхнем углу. Первые значения Setbounds — это положение вашего «тела». Поэтому установите правильную ширину и правильное положение с помощью setBounds, и все должно работать нормально.

person BennX    schedule 23.05.2013
comment
Я знаю, что должен правильно установить границы. Я так и сказал, проблема в границах. Прошу совета как поступить правильно. Я установил границы при создании актера, поэтому должен ли я обновлять их относительно позиции актера каждый кадр? - person tambalolo; 23.05.2013
comment
Да, ты должен. В противном случае картина находится в другом положении от актера. Обычно вы обновляете позицию актеров. (.setPosition(x,y)) и нарисуйте изображение или что-то еще в зависимости от getX() и getY(). - person BennX; 23.05.2013