Исходное изображение, пусть будет фон:
После удаления фона:
Для создания формы (контура) можно воспользоваться или блокнотом (по-сути на выходе 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)); }
Комментариев нет:
Отправить комментарий