Исходное изображение, пусть будет фон:
После удаления фона:
Для создания формы (контура) можно воспользоваться или блокнотом (по-сути на выходе xml-файл) или спец. приложениями.
Типовой xml содержащий контур имеет следующую структуру(сгенерирован автоматически, приведён не полностью):
<?xml version="1.0" encoding="UTF-8"?>
<!-- created with http://www.physicseditor.de -->
<bodydef version="1.0">
<bodies numBodies="1">
<body name="level1" dynamic="false" numFixtures="3">
<fixture
density="2"
friction="0"
restitution="0"
filter_categoryBits="1"
filter_groupIndex="0"
filter_maskBits="65535"
isSensor="false"
type="POLYGON"
numPolygons="46"
>
<polygon numVertexes="3">
<vertex x="240.0000" y="18.0000" />
<vertex x="238.0000" y="20.0000" />
<vertex x="238.0000" y="18.0000" />
</polygon>
*** *** *** *** *** *** *** *** *** *** *** *** ***
<polygon numVertexes="3">
<vertex x="401.0000" y="-240.0000" />
<vertex x="292.0000" y="-37.0000" />
<vertex x="292.0000" y="-39.0000" />
</polygon>
</fixture>
<fixture
density="2"
friction="0"
restitution="0"
filter_categoryBits="1"
filter_groupIndex="0"
filter_maskBits="65535"
isSensor="false"
type="POLYGON"
numPolygons="2"
>
<polygon numVertexes="6">
<vertex x="-103.0000" y="51.0000" />
<vertex x="-80.0000" y="52.0000" />
<vertex x="-74.0000" y="57.0000" />
<vertex x="-72.0000" y="61.0000" />
<vertex x="-110.0000" y="55.0000" />
<vertex x="-108.0000" y="52.0000" />
</polygon>
<polygon numVertexes="6">
<vertex x="-116.0000" y="62.0000" />
<vertex x="-112.0000" y="55.0000" />
<vertex x="-110.0000" y="55.0000" />
<vertex x="-72.0000" y="61.0000" />
<vertex x="-72.0000" y="240.0000" />
<vertex x="-116.0000" y="240.0000" />
</polygon>
</fixture>
</body>
</bodies>
<metadata>
<format>1</format>
<ptm_ratio></ptm_ratio>
</metadata>
</bodydef>
Заполнять в ручную координаты - извращение, поэтому этот процесс автоматизирован спец. софтом.
1. PhysicsEditor, условно-бесплатная
http://www.codeandweb.com/physicseditor
Выбранный фон был повернут на 90 градусов, так как в andengine так настроена камера была, цвет "стенок" изменен. Фон неподвижный объект, поэтому галочка IsDynamic снята. В качестве экспортера выбран andengine. Инструмент "волшебная палочка" имеет несколько настроек, от них зависит "угловатость" многоугольника.
Для ее работы необходима установленная java. Функционал аналогичный-минималистичный.
https://code.google.com/p/box2d-editor/
Контуры сохраняются в папку \assets\shapes
В проект необходимо включить класс PhysicsEditorShapeLibrary, а на методе загрузки ресурсов проинициализировать её:
this.physicsEditorShapeLibrary = new PhysicsEditorShapeLibrary(); this.physicsEditorShapeLibrary.open(this, "shapes/1.xml");Файл 1.xml может (и должно) содержать не одно описание контура, как в примере, а множество. Осталось создать "тело" спрайта с нашим контуром, например так:
private void addBackGround() {
String shape = "level1";
Sprite sprite = new Sprite(0, 0, mBackGroundTextureRegion, this.getVertexBufferObjectManager());
sprite.setPosition(0, 0);
sprite.setColor(Color.CYAN);
mBody = this.physicsEditorShapeLibrary.createBody(shape, sprite, this.mPhysicsWorld);
this.mScene.attachChild(sprite);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(sprite, mBody, true, true));
}

Комментариев нет:
Отправить комментарий