Engranajes en Box2D

Buenas tardes, querido lector! Este es el cuarto artículo sobre Box2D. Y aquí ofreceré una solución llave en mano para programadores. Yo mismo necesitaba engranajes para mi proyecto, e hice 4, 6, 12 y 24 engranajes. El código tomó 2115 líneas, 4 días de trabajo. Y quiero compartirlo con usted para que pueda ahorrar tiempo para proyectos Box2D realmente impresionantes. Todos los engranajes están escalados, puede establecer el ángulo de rotación, las coordenadas, la disponibilidad, la velocidad y la potencia del motor. En el código, todo se comenta en detalle.

Si necesita algo como esto (la animación gif estará después del kat):

imagen

Figura 1. El sistema de engranajes.

¡Ese artículo es definitivamente para ti!

imagen

Figura 1. Sistema de engranaje animado

La composición del proyecto es la misma, lea el primer artículo sobre la conexión de libGDX y cree el mismo proyecto.

El código contiene una descripción para todos los tipos de engranajes.
package com.mygdx.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; import com.badlogic.gdx.physics.box2d.FixtureDef; import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef; import com.badlogic.gdx.physics.box2d.joints.WeldJointDef; import utils.Constants; public class MyGdxGame extends ApplicationAdapter { private OrthographicCamera camera; private boolean DEBUG = false; private World world; private Box2DDebugRenderer b2dr; private Body basis; // 4  private Body box; private Body toptooth; private Body righttooth; private Body bottooth; private Body lefttooth; // 6  private Body hexagonum; private Body lefthextooth; private Body righthextooth; private Body toprighthextooth; private Body toplefthextooth; private Body botrighthextooth; private Body botlefthextooth; // 12  private Body Dodecangulum; private Body Dodecangulum2; private Body DodecangulumBotLeftTooth1; private Body DodecangulumBotLeftTooth2; private Body DodecangulumBotLeftTooth3; private Body DodecangulumBotRightTooth1; private Body DodecangulumBotRightTooth2; private Body DodecangulumBotRightTooth3; private Body DodecangulumTopLeftTooth1; private Body DodecangulumTopLeftTooth2; private Body DodecangulumTopLeftTooth3; private Body DodecangulumTopRightTooth1; private Body DodecangulumTopRightTooth2; private Body DodecangulumTopRightTooth3; // 24  private Body twentyfourteethcog1; private Body twentyfourteethcog2; private Body twentyfourteethcog3; private Body twentyfourteethcog4; private Body twentyfourteethcogBotLeftTooth1; private Body twentyfourteethcogBotLeftTooth2; private Body twentyfourteethcogBotLeftTooth3; private Body twentyfourteethcogBotLeftTooth4; private Body twentyfourteethcogBotLeftTooth5; private Body twentyfourteethcogBotLeftTooth6; private Body twentyfourteethcogBotRightTooth1; private Body twentyfourteethcogBotRightTooth2; private Body twentyfourteethcogBotRightTooth3; private Body twentyfourteethcogBotRightTooth4; private Body twentyfourteethcogBotRightTooth5; private Body twentyfourteethcogBotRightTooth6; private Body twentyfourteethcogTopLeftTooth1; private Body twentyfourteethcogTopLeftTooth2; private Body twentyfourteethcogTopLeftTooth3; private Body twentyfourteethcogTopLeftTooth4; private Body twentyfourteethcogTopLeftTooth5; private Body twentyfourteethcogTopLeftTooth6; private Body twentyfourteethcogTopRightTooth1; private Body twentyfourteethcogTopRightTooth2; private Body twentyfourteethcogTopRightTooth3; private Body twentyfourteethcogTopRightTooth4; private Body twentyfourteethcogTopRightTooth5; private Body twentyfourteethcogTopRightTooth6; public void create() { float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); camera = new OrthographicCamera(); camera.setToOrtho(false, w / 2, h / 2); world = new World(new Vector2(0, -9.8f), false); b2dr = new Box2DDebugRenderer(); twentyfourCog(0f, 0f, 0f, true, 0.7f, 30, 30); //   -  ,  -     x, //  -     y,  -   ,  - //  ,  -  ,  -   } //    24  public void twentyfourCog(float rotation, float xo, float yo, boolean n, float resize, int speed, int hf) { // ,   basis = createBasis(xo, yo, resize); //    4 ,    Box2D   //     3  8 twentyfourteethcog1 = createtwentyfourteethcog1(xo, yo, resize); twentyfourteethcog2 = createtwentyfourteethcog2(xo, yo, resize); twentyfourteethcog3 = createtwentyfourteethcog3(xo, yo, resize); twentyfourteethcog4 = createtwentyfourteethcog4(xo, yo, resize); //    twentyfourteethcog1.setTransform(xo, yo, rotation); twentyfourteethcog2.setTransform(xo, yo, rotation); twentyfourteethcog3.setTransform(xo, yo, rotation); twentyfourteethcog4.setTransform(xo, yo, rotation); //  ,   twentyfourteethcogTopRightTooth1 = createtwentyfourteethcogTopRightTooth1(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth1.setTransform(xo, yo, rotation); twentyfourteethcogTopRightTooth2 = createtwentyfourteethcogTopRightTooth2(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth2.setTransform(xo, yo, rotation); twentyfourteethcogTopRightTooth3 = createtwentyfourteethcogTopRightTooth3(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth3.setTransform(xo, yo, rotation); twentyfourteethcogTopRightTooth4 = createtwentyfourteethcogTopRightTooth4(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth4.setTransform(xo, yo, rotation); twentyfourteethcogTopRightTooth5 = createtwentyfourteethcogTopRightTooth5(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth5.setTransform(xo, yo, rotation); twentyfourteethcogTopRightTooth6 = createtwentyfourteethcogTopRightTooth6(xo, yo, xo, yo, resize); twentyfourteethcogTopRightTooth6.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth1 = createtwentyfourteethcogTopLeftTooth1(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth1.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth2 = createtwentyfourteethcogTopLeftTooth2(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth2.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth3 = createtwentyfourteethcogTopLeftTooth3(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth3.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth4 = createtwentyfourteethcogTopLeftTooth4(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth4.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth5 = createtwentyfourteethcogTopLeftTooth5(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth5.setTransform(xo, yo, rotation); twentyfourteethcogTopLeftTooth6 = createtwentyfourteethcogTopLeftTooth6(xo, yo, xo, yo, resize); twentyfourteethcogTopLeftTooth6.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth1 = createtwentyfourteethcogBotRightTooth1(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth1.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth2 = createtwentyfourteethcogBotRightTooth2(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth2.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth3 = createtwentyfourteethcogBotRightTooth3(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth3.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth4 = createtwentyfourteethcogBotRightTooth4(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth4.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth5 = createtwentyfourteethcogBotRightTooth5(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth5.setTransform(xo, yo, rotation); twentyfourteethcogBotRightTooth6 = createtwentyfourteethcogBotRightTooth6(xo, yo, xo, yo, resize); twentyfourteethcogBotRightTooth6.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth1 = createtwentyfourteethcogBotLeftTooth1(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth1.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth2 = createtwentyfourteethcogBotLeftTooth2(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth2.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth3 = createtwentyfourteethcogBotLeftTooth3(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth3.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth4 = createtwentyfourteethcogBotLeftTooth4(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth4.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth5 = createtwentyfourteethcogBotLeftTooth5(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth5.setTransform(xo, yo, rotation); twentyfourteethcogBotLeftTooth6 = createtwentyfourteethcogBotLeftTooth6(xo, yo, xo, yo, resize); twentyfourteethcogBotLeftTooth6.setTransform(xo, yo, rotation); //   ,   weldMotJoint(twentyfourteethcog1, twentyfourteethcog2); weldMotJoint(twentyfourteethcog1, twentyfourteethcog3); weldMotJoint(twentyfourteethcog1, twentyfourteethcog4); weldMotJoint(twentyfourteethcog2, twentyfourteethcog1); weldMotJoint(twentyfourteethcog2, twentyfourteethcog3); weldMotJoint(twentyfourteethcog2, twentyfourteethcog4); weldMotJoint(twentyfourteethcog3, twentyfourteethcog1); weldMotJoint(twentyfourteethcog3, twentyfourteethcog2); weldMotJoint(twentyfourteethcog3, twentyfourteethcog4); weldMotJoint(twentyfourteethcog4, twentyfourteethcog1); weldMotJoint(twentyfourteethcog4, twentyfourteethcog2); weldMotJoint(twentyfourteethcog4, twentyfourteethcog3); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth1); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth2); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth3); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth4); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth5); weldMotJoint(twentyfourteethcog1, twentyfourteethcogTopRightTooth6); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth1); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth2); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth3); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth4); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth5); weldMotJoint(twentyfourteethcog4, twentyfourteethcogTopLeftTooth6); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth1); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth2); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth3); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth4); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth5); weldMotJoint(twentyfourteethcog2, twentyfourteethcogBotRightTooth6); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth1); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth2); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth3); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth4); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth5); weldMotJoint(twentyfourteethcog3, twentyfourteethcogBotLeftTooth6); //         revJoint(basis, twentyfourteethcog1, n, speed, hf); revJoint(basis, twentyfourteethcog2, n, speed, hf); revJoint(basis, twentyfourteethcog3, n, speed, hf); revJoint(basis, twentyfourteethcog4, n, speed, hf); } //   ,   12  public void twelveCog(float rotation, float xo, float yo, boolean n, float resize, int speed, int hf) { basis = createBasis(xo, yo, resize); Dodecangulum = createDodecangulum(xo, yo, resize); Dodecangulum.setTransform(xo, yo, rotation); DodecangulumTopLeftTooth1 = createTopLeftDodecangulumTooth1(xo, yo, xo, yo, resize); DodecangulumTopLeftTooth1.setTransform(xo, yo, rotation); DodecangulumTopLeftTooth2 = createTopLeftDodecangulumTooth2(xo, yo, xo, yo, resize); DodecangulumTopLeftTooth2.setTransform(xo, yo, rotation); DodecangulumTopLeftTooth3 = createTopLeftDodecangulumTooth3(xo, yo, xo, yo, resize); DodecangulumTopLeftTooth3.setTransform(xo, yo, rotation); DodecangulumTopRightTooth1 = createTopRightDodecangulumTooth1(xo, yo, xo, yo, resize); DodecangulumTopRightTooth1.setTransform(xo, yo, rotation); DodecangulumTopRightTooth2 = createTopRightDodecangulumTooth2(xo, yo, xo, yo, resize); DodecangulumTopRightTooth2.setTransform(xo, yo, rotation); DodecangulumTopRightTooth3 = createTopRightDodecangulumTooth3(xo, yo, xo, yo, resize); DodecangulumTopRightTooth3.setTransform(xo, yo, rotation); weldMotJoint(DodecangulumTopLeftTooth1, Dodecangulum); weldMotJoint(DodecangulumTopLeftTooth2, Dodecangulum); weldMotJoint(DodecangulumTopLeftTooth3, Dodecangulum); weldMotJoint(DodecangulumTopRightTooth1, Dodecangulum); weldMotJoint(DodecangulumTopRightTooth2, Dodecangulum); weldMotJoint(DodecangulumTopRightTooth3, Dodecangulum); Dodecangulum2 = createDodecangulum2(xo, yo, resize); Dodecangulum2.setTransform(xo, yo, rotation); DodecangulumBotLeftTooth1 = createBotLeftDodecangulumTooth1(xo, yo, xo, yo, resize); DodecangulumBotLeftTooth1.setTransform(xo, yo, rotation); DodecangulumBotLeftTooth2 = createBotLeftDodecangulumTooth2(xo, yo, xo, yo, resize); DodecangulumBotLeftTooth2.setTransform(xo, yo, rotation); DodecangulumBotLeftTooth3 = createBotLeftDodecangulumTooth3(xo, yo, xo, yo, resize); DodecangulumBotLeftTooth3.setTransform(xo, yo, rotation); DodecangulumBotRightTooth1 = createBotRightDodecangulumTooth1(xo, yo, xo, yo, resize); DodecangulumBotRightTooth1.setTransform(xo, yo, rotation); DodecangulumBotRightTooth2 = createBotRightDodecangulumTooth2(xo, yo, xo, yo, resize); DodecangulumBotRightTooth2.setTransform(xo, yo, rotation); DodecangulumBotRightTooth3 = createBotRightDodecangulumTooth3(xo, yo, xo, yo, resize); DodecangulumBotRightTooth3.setTransform(xo, yo, rotation); weldMotJoint(DodecangulumBotLeftTooth1, Dodecangulum2); weldMotJoint(DodecangulumBotLeftTooth2, Dodecangulum2); weldMotJoint(DodecangulumBotLeftTooth3, Dodecangulum2); weldMotJoint(DodecangulumBotRightTooth1, Dodecangulum2); weldMotJoint(DodecangulumBotRightTooth2, Dodecangulum2); weldMotJoint(DodecangulumBotRightTooth3, Dodecangulum2); weldMotJoint(Dodecangulum2, Dodecangulum); weldMotJoint(Dodecangulum, Dodecangulum2); revJoint(basis, Dodecangulum, n, speed, hf); revJoint(basis, Dodecangulum2, n, speed, hf); } //   ,   6  public void sixCog(float rotation, float xo, float yo, boolean n, float resize, int speed, int hf) { basis = createBasis(xo, yo, resize); hexagonum = createHexagonum(xo, yo, resize); revJoint(basis, hexagonum, n, speed, hf); hexagonum.setTransform(hexagonum.getPosition().x, hexagonum.getPosition().y, rotation); lefthextooth = createLeftHexTooth(xo, yo, xo, yo, resize); lefthextooth.setTransform(xo, yo, rotation); righthextooth = createRightHexTooth(xo, yo, xo, yo, resize); righthextooth.setTransform(xo, yo, rotation); toprighthextooth = createTopRightHexTooth(xo, yo, xo, yo, resize); toprighthextooth.setTransform(xo, yo, rotation); toplefthextooth = createTopLeftHexTooth(xo, yo, xo, yo, resize); toplefthextooth.setTransform(xo, yo, rotation); botlefthextooth = createBotLeftHexTooth(xo, yo, xo, yo, resize); botlefthextooth.setTransform(xo, yo, rotation); botrighthextooth = createBotRightHexTooth(xo, yo, xo, yo, resize); botrighthextooth.setTransform(xo, yo, rotation); weldMotJoint(hexagonum, lefthextooth); weldMotJoint(hexagonum, righthextooth); weldMotJoint(hexagonum, toprighthextooth); weldMotJoint(hexagonum, toplefthextooth); weldMotJoint(hexagonum, botlefthextooth); weldMotJoint(hexagonum, botrighthextooth); } //   ,   4  public void fourCog(float rotation, float xo, float yo, boolean n, float resize, int speed, int hf) { basis = createBasis(xo, yo, resize); box = createBox(xo, yo, resize); box.setTransform(box.getPosition().x, box.getPosition().y, rotation); toptooth = createTopTooth(xo, yo, xo, yo, resize); toptooth.setTransform(xo, yo, rotation); righttooth = createRightTooth(xo, yo, xo, yo, resize); righttooth.setTransform(xo, yo, rotation); bottooth = createBotTooth(xo, yo, xo, yo, resize); bottooth.setTransform(xo, yo, rotation); lefttooth = createLeftTooth(xo, yo, xo, yo, resize); lefttooth.setTransform(xo, yo, rotation); weldMotJoint(box, toptooth); weldMotJoint(box, righttooth); weldMotJoint(box, bottooth); weldMotJoint(box, lefttooth); revJoint(basis, box, n, speed, hf); } //      public void revJoint(Body body1, Body body2, boolean n, int speed, int hf) { RevoluteJointDef rjd = new RevoluteJointDef(); if (n == true) { rjd.enableMotor = true; rjd.motorSpeed = speed; rjd.maxMotorTorque = hf; } rjd.collideConnected = false; rjd.bodyA = body1; rjd.bodyB = body2; rjd.localAnchorA.set(body1.getPosition().x, body1.getPosition().y); rjd.localAnchorB.set(body2.getPosition().x, body2.getPosition().y); world.createJoint(rjd); } //   public void weldMotJoint(Body body1, Body body2) { WeldJointDef rjd = new WeldJointDef(); rjd.collideConnected = false; rjd.bodyA = body1; rjd.bodyB = body2; rjd.localAnchorA.set(body1.getPosition().x, body1.getPosition().y); rjd.localAnchorB.set(body2.getPosition().x, body2.getPosition().y); world.createJoint(rjd); } public void render() { update(Gdx.graphics.getDeltaTime()); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); b2dr.render(world, camera.combined.scl(Constants.PPM)); } public void resize(int width, int height) { camera.setToOrtho(false, width / 2, height / 2); } public void dispose() { world.dispose(); b2dr.dispose(); } public void update(float delta) { world.step(1 / 60f, 6, 2); cameraUpdate(delta); } //      public void cameraUpdate(float delta) { Vector3 position = camera.position; position.x = basis.getPosition().x * Constants.PPM; position.y = basis.getPosition().y * Constants.PPM; camera.position.set(position); camera.update(); } //       4  public Body createBox(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } //   ,      public Body createTopTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-0.5f * 10 / utils.Constants.PPM * resize + dx, 8f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(0.5f * 10 / utils.Constants.PPM * resize + dx, 8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createRightTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, 0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, -0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-0.5f * 10 / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(0.5f * 10 / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createLeftTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, 0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, -0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-2f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBasis(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(2f * 10 / utils.Constants.PPM / 2 * resize + dx, 2f * 10 / utils.Constants.PPM / 2 * resize + dy); verticles[1] = new Vector2(2f * 10 / utils.Constants.PPM / 2 * resize + dx, -2f * 10 / utils.Constants.PPM / 2 * resize + dy); verticles[2] = new Vector2(-2f * 10 / utils.Constants.PPM / 2 * resize + dx, 2f * 10 / utils.Constants.PPM / 2 * resize + dy); verticles[3] = new Vector2(-2f * 10 / utils.Constants.PPM / 2 * resize + dx, -2f * 10 / utils.Constants.PPM / 2 * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.StaticBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } //   6  public Body createHexagonum(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[6]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 3f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -3f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createLeftHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-9.5f * 10 / utils.Constants.PPM * resize + dx, -0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-9.5f * 10 / utils.Constants.PPM * resize + dx, 0.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createRightHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(9.5f * 10 / utils.Constants.PPM * resize + dx, -0.5f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(9.5f * 10 / utils.Constants.PPM * resize + dx, 0.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopRightHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 3f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(5.9f * 10 / utils.Constants.PPM * resize + dx, 8.7f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(5.1f * 10 / utils.Constants.PPM * resize + dx, 9.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopLeftHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 3f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, 1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-5.9f * 10 / utils.Constants.PPM * resize + dx, 8.7f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-5.1f * 10 / utils.Constants.PPM * resize + dx, 9.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotRightHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -3f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(5.9f * 10 / utils.Constants.PPM * resize + dx, -8.7f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(5.1f * 10 / utils.Constants.PPM * resize + dx, -9.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotLeftHexTooth(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -3f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, -1.5f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-5.9f * 10 / utils.Constants.PPM * resize + dx, -8.7f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-5.1f * 10 / utils.Constants.PPM * resize + dx, -9.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } //   12 ,   2  -    public Body createDodecangulum(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 4f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(4 * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0 * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createDodecangulum2(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(4 * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -4f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopLeftDodecangulumTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 4f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, 11.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-3.6f * 10 / utils.Constants.PPM * resize + dx, 11.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopLeftDodecangulumTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-8.1f * 10 / utils.Constants.PPM * resize + dx, 8.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-8.7f * 10 / utils.Constants.PPM * resize + dx, 8.1f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopLeftDodecangulumTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4.0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-11.25f * 10 / utils.Constants.PPM * resize + dx, 3.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-11.5f * 10 / utils.Constants.PPM * resize + dx, 2.7f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopRightDodecangulumTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 4f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, 11.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(3.6f * 10 / utils.Constants.PPM * resize + dx, 11.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopRightDodecangulumTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, 3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(8.1f * 10 / utils.Constants.PPM * resize + dx, 8.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(8.7f * 10 / utils.Constants.PPM * resize + dx, 8.1f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createTopRightDodecangulumTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4.0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, 2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(11.25f * 10 / utils.Constants.PPM * resize + dx, 3.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(11.5f * 10 / utils.Constants.PPM * resize + dx, 2.7f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotLeftDodecangulumTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -4f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2.5f * 10 / utils.Constants.PPM * resize + dx, -11.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-3.6f * 10 / utils.Constants.PPM * resize + dx, -11.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotLeftDodecangulumTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-8.1f * 10 / utils.Constants.PPM * resize + dx, -8.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-8.7f * 10 / utils.Constants.PPM * resize + dx, -8.1f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotLeftDodecangulumTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4.0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-11.25f * 10 / utils.Constants.PPM * resize + dx, -3.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-11.5f * 10 / utils.Constants.PPM * resize + dx, -2.7f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotRightDodecangulumTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -4f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.5f * 10 / utils.Constants.PPM * resize + dx, -11.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(3.6f * 10 / utils.Constants.PPM * resize + dx, -11.3f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotRightDodecangulumTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.2f * 10 / utils.Constants.PPM * resize + dx, -3.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(8.1f * 10 / utils.Constants.PPM * resize + dx, -8.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(8.7f * 10 / utils.Constants.PPM * resize + dx, -8.1f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createBotRightDodecangulumTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4.0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(3.4f * 10 / utils.Constants.PPM * resize + dx, -2f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(11.25f * 10 / utils.Constants.PPM * resize + dx, -3.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(11.5f * 10 / utils.Constants.PPM * resize + dx, -2.7f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } //   24  ,  4   public Body createtwentyfourteethcog1(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(0 * 10 / utils.Constants.PPM * resize + dx, 8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, 4f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcog2(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(0 * 10 / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, -4f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcog3(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(0 * 10f / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, -4f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcog4(float dx, float dy, float resize) { Vector2[] verticles = new Vector2[8]; verticles[0] = new Vector2(-0 * 10 / utils.Constants.PPM * resize + dx, 8 * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[4] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, 4f * 10 / utils.Constants.PPM * resize + dy); verticles[5] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[6] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); verticles[7] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 0 * 10 / utils.Constants.PPM * resize + dy); PolygonShape shape = new PolygonShape(); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(dx, dy); def.fixedRotation = false; fBody = world.createBody(def); shape.set(verticles); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.5f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.0f * 10 / utils.Constants.PPM * resize + dx, 15.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(3.0f * 10 / utils.Constants.PPM * resize + dx, 15.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, 14.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(6.6f * 10 / utils.Constants.PPM * resize + dx, 14.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(10.2f * 10 / utils.Constants.PPM * resize + dx, 12.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(9.5f * 10 / utils.Constants.PPM * resize + dx, 12.8f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth4(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, 4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(12.2f * 10 / utils.Constants.PPM * resize + dx, 10.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(12.8f * 10 / utils.Constants.PPM * resize + dx, 9.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth5(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, 4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(14.5f * 10 / utils.Constants.PPM * resize + dx, 6.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(14.9f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopRightTooth6(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, 0.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(15.8f * 10 / utils.Constants.PPM * resize + dx, 2.0f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(15.6f * 10 / utils.Constants.PPM * resize + dx, 3.0f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, 8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2.0f * 10 / utils.Constants.PPM * resize + dx, 15.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-3.0f * 10 / utils.Constants.PPM * resize + dx, 15.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, 7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, 14.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-6.6f * 10 / utils.Constants.PPM * resize + dx, 14.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, 6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-10.2f * 10 / utils.Constants.PPM * resize + dx, 12.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-9.5f * 10 / utils.Constants.PPM * resize + dx, 12.8f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth4(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, 4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-12.2f * 10 / utils.Constants.PPM * resize + dx, 10.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-12.8f * 10 / utils.Constants.PPM * resize + dx, 9.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth5(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, 4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-14.5f * 10 / utils.Constants.PPM * resize + dx, 6.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-14.9f * 10 / utils.Constants.PPM * resize + dx, 5.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogTopLeftTooth6(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, 0.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, 2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-15.8f * 10 / utils.Constants.PPM * resize + dx, 2.0f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-15.6f * 10 / utils.Constants.PPM * resize + dx, 3.0f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(2.0f * 10 / utils.Constants.PPM * resize + dx, -15.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(3.0f * 10 / utils.Constants.PPM * resize + dx, -15.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, -14.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(6.6f * 10 / utils.Constants.PPM * resize + dx, -14.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(10.2f * 10 / utils.Constants.PPM * resize + dx, -12.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(9.5f * 10 / utils.Constants.PPM * resize + dx, -12.8f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth4(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, -4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(12.2f * 10 / utils.Constants.PPM * resize + dx, -10.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(12.8f * 10 / utils.Constants.PPM * resize + dx, -9.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth5(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(6.9f * 10 / utils.Constants.PPM * resize + dx, -4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(14.5f * 10 / utils.Constants.PPM * resize + dx, -6.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(14.9f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotRightTooth6(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(8f * 10 / utils.Constants.PPM * resize + dx, 0.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(15.8f * 10 / utils.Constants.PPM * resize + dx, -2.0f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(15.6f * 10 / utils.Constants.PPM * resize + dx, -3.0f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth1(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(0f * 10 / utils.Constants.PPM * resize + dx, -8f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-2.0f * 10 / utils.Constants.PPM * resize + dx, -15.8f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-3.0f * 10 / utils.Constants.PPM * resize + dx, -15.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth2(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-2.1f * 10 / utils.Constants.PPM * resize + dx, -7.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, -14.9f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-6.6f * 10 / utils.Constants.PPM * resize + dx, -14.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth3(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-4f * 10 / utils.Constants.PPM * resize + dx, -6.9f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-10.2f * 10 / utils.Constants.PPM * resize + dx, -12.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-9.5f * 10 / utils.Constants.PPM * resize + dx, -12.8f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth4(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, -4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-5.6f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-12.2f * 10 / utils.Constants.PPM * resize + dx, -10.2f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-12.8f * 10 / utils.Constants.PPM * resize + dx, -9.5f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth5(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-6.9f * 10 / utils.Constants.PPM * resize + dx, -4.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-14.5f * 10 / utils.Constants.PPM * resize + dx, -6.6f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-14.9f * 10 / utils.Constants.PPM * resize + dx, -5.6f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } public Body createtwentyfourteethcogBotLeftTooth6(float xo, float yo, float dx, float dy, float resize) { PolygonShape shape = new PolygonShape(); Vector2[] verticles = new Vector2[4]; verticles[0] = new Vector2(-8f * 10 / utils.Constants.PPM * resize + dx, 0.0f * 10 / utils.Constants.PPM * resize + dy); verticles[1] = new Vector2(-7.6f * 10 / utils.Constants.PPM * resize + dx, -2.1f * 10 / utils.Constants.PPM * resize + dy); verticles[2] = new Vector2(-15.8f * 10 / utils.Constants.PPM * resize + dx, -2.0f * 10 / utils.Constants.PPM * resize + dy); verticles[3] = new Vector2(-15.6f * 10 / utils.Constants.PPM * resize + dx, -3.0f * 10 / utils.Constants.PPM * resize + dy); Body fBody; BodyDef def = new BodyDef(); def.type = BodyDef.BodyType.DynamicBody; def.position.set(xo * 10 / utils.Constants.PPM + dx, yo * 10 / utils.Constants.PPM + dy); def.fixedRotation = false; shape.set(verticles); fBody = world.createBody(def); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.friction = 0.7f; fd.density = 3f; fd.restitution = 0.5f; fBody.createFixture(fd); shape.dispose(); return fBody; } } 



imagen

Figura 3. Engranaje con 4 dientes.

imagen

Figura 4. Engranaje con 6 dientes.

imagen

Figura 5. Engranaje con 12 dientes.

imagen

Figura 6. Engranaje con 24 dientes.

¡Gracias por leer hasta el final! ¡Espero que el código de este artículo te haya ayudado mucho en tu proyecto!

PD : responderé todas las preguntas en los comentarios.

Source: https://habr.com/ru/post/450698/


All Articles