Example usage for com.badlogic.gdx.physics.box2d Body getAngle

List of usage examples for com.badlogic.gdx.physics.box2d Body getAngle

Introduction

In this page you can find the example usage for com.badlogic.gdx.physics.box2d Body getAngle.

Prototype

public float getAngle() 

Source Link

Document

Get the angle in radians.

Usage

From source file:com.agateau.pixelwheels.racer.SpinningComponent.java

License:Open Source License

@Override
public void act(float delta) {
    if (!mActive) {
        return;//from   w  w  w. j a  v a 2 s .c om
    }
    Body body = mVehicle.getBody();

    // Slow down
    body.applyLinearImpulse(body.getLinearVelocity().nor().scl(-body.getMass()), body.getWorldCenter(), true);

    // Spin
    float nextAngle = body.getAngle() + body.getAngularVelocity() * GameWorld.BOX2D_TIME_STEP;
    if (nextAngle > mTargetBodyAngle) {
        stopSpinning();
        return;
    }

    float totalRotation = mTargetBodyAngle - nextAngle;
    float desiredAngularVelocity = totalRotation / GameWorld.BOX2D_TIME_STEP;
    if (desiredAngularVelocity < 0) {
        desiredAngularVelocity = MathUtils.clamp(desiredAngularVelocity, -MAX_ANGULAR_VELOCITY,
                -MIN_ANGULAR_VELOCITY);
    } else {
        desiredAngularVelocity = MathUtils.clamp(desiredAngularVelocity, MIN_ANGULAR_VELOCITY,
                MAX_ANGULAR_VELOCITY);
    }
    float impulse = body.getInertia() * (desiredAngularVelocity - body.getAngularVelocity());
    body.applyAngularImpulse(impulse, true);
}

From source file:com.agateau.pixelwheels.racer.VehicleRenderer.java

License:Open Source License

private void drawTurbo(Batch batch) {
    TextureRegion region = mAssets.turboFlame.getKeyFrame(mVehicle.getTurboTime(), true);
    Body body = mVehicle.getBody();
    Vector2 center = body.getPosition();
    float angle = body.getAngle() * MathUtils.radiansToDegrees;
    float w = Constants.UNIT_FOR_PIXEL * region.getRegionWidth();
    float h = Constants.UNIT_FOR_PIXEL * region.getRegionHeight();
    float refH = -mVehicle.getWidth() / 2;
    float x = center.x + refH * MathUtils.cosDeg(angle);
    float y = center.y + refH * MathUtils.sinDeg(angle);
    batch.draw(region, x - w / 2, y - h, // pos
            w / 2, h, // origin
            w, h, // size
            1, 1, // scale
            angle - 90);/*  w w w. j  a  v a 2s .  c om*/
}

From source file:com.agateau.pixelwheels.utils.BodyRegionDrawer.java

License:Open Source License

public void draw(Body body, TextureRegion region) {
    Vector2 center = body.getPosition();
    float angle = body.getAngle();
    float x = center.x + mOffsetX * MathUtils.cos(angle) - mOffsetY * MathUtils.sin(angle);
    float y = center.y + mOffsetX * MathUtils.sin(angle) + mOffsetY * MathUtils.cos(angle);
    float w = Constants.UNIT_FOR_PIXEL * region.getRegionWidth();
    float h = Constants.UNIT_FOR_PIXEL * region.getRegionHeight();
    mBatch.draw(region, x - w / 2, y - h / 2, // pos
            w / 2, h / 2, // origin
            w, h, // size
            mScale, mScale, angle * MathUtils.radDeg);
}

From source file:com.agateau.pixelwheels.utils.BodyRegionDrawer.java

License:Open Source License

public void drawShadow(Body body, TextureRegion region) {
    Vector2 center = body.getPosition();
    float angle = body.getAngle() * MathUtils.radiansToDegrees;
    float offset = (SHADOW_OFFSET_PX + mZ * Z_MAX_SHADOW_OFFSET_PX + (mScale - 1) * SCALE_MAX_SHADOW_OFFSET_PX)
            * Constants.UNIT_FOR_PIXEL;//from ww  w  . j  a v a2s  .  c  om
    float x = center.x + offset;
    float y = center.y - offset;
    float w = Constants.UNIT_FOR_PIXEL * region.getRegionWidth();
    float h = Constants.UNIT_FOR_PIXEL * region.getRegionHeight();
    Color old = mBatch.getColor();
    mBatch.setColor(0, 0, 0, SHADOW_ALPHA);
    mBatch.draw(region, x - w / 2, y - h / 2, // pos
            w / 2, h / 2, // origin
            w, h, // size
            1, 1, // scale
            angle);
    mBatch.setColor(old);
}

From source file:com.cafeitvn.myballgame.screen.Box2DMapObjectParser.java

License:Apache License

/**
 * creates a {@link Fixture} from a {@link MapObject}
 * @param mapObject the {@link MapObject} which to parse
 * @return the parsed {@link Fixture}//from w w w .ja  v  a  2  s  .c  o m
 */
public Fixture createFixture(MapObject mapObject) {
    MapProperties properties = mapObject.getProperties();

    String type = properties.get("type", String.class);

    Body body = bodies.get(
            type.equals(aliases.object) ? mapObject.getName() : properties.get(aliases.body, String.class));

    if (!type.equals(aliases.fixture) && !type.equals(aliases.object))
        throw new IllegalArgumentException("type of " + mapObject + " is  \"" + type + "\" instead of \""
                + aliases.fixture + "\" or \"" + aliases.object + "\"");

    FixtureDef fixtureDef = new FixtureDef();
    Shape shape = null;

    if (mapObject instanceof RectangleMapObject) {
        shape = new PolygonShape();
        Rectangle rectangle = ((RectangleMapObject) mapObject).getRectangle();
        rectangle.x *= unitScale;
        rectangle.y *= unitScale;
        rectangle.width *= unitScale;
        rectangle.height *= unitScale;
        ((PolygonShape) shape).setAsBox(rectangle.width / 2, rectangle.height / 2,
                new Vector2(rectangle.x - body.getPosition().x + rectangle.width / 2,
                        rectangle.y - body.getPosition().y + rectangle.height / 2),
                body.getAngle());
    } else if (mapObject instanceof PolygonMapObject) {
        shape = new PolygonShape();
        Polygon polygon = ((PolygonMapObject) mapObject).getPolygon();
        polygon.setPosition(polygon.getX() * unitScale - body.getPosition().x,
                polygon.getY() * unitScale - body.getPosition().y);
        polygon.setScale(unitScale, unitScale);
        ((PolygonShape) shape).set(polygon.getTransformedVertices());
    } else if (mapObject instanceof PolylineMapObject) {
        shape = new ChainShape();
        Polyline polyline = ((PolylineMapObject) mapObject).getPolyline();
        polyline.setPosition(polyline.getX() * unitScale - body.getPosition().x,
                polyline.getY() * unitScale - body.getPosition().y);
        polyline.setScale(unitScale, unitScale);
        ((ChainShape) shape).createChain(polyline.getTransformedVertices());
    } else if (mapObject instanceof CircleMapObject) {
        shape = new CircleShape();
        Circle circle = ((CircleMapObject) mapObject).getCircle();
        circle.setPosition(circle.x * unitScale - body.getPosition().x,
                circle.y * unitScale - body.getPosition().y);
        circle.radius *= unitScale;
        ((CircleShape) shape).setPosition(new Vector2(circle.x, circle.y));
        ((CircleShape) shape).setRadius(circle.radius);
    } else if (mapObject instanceof EllipseMapObject) {
        Ellipse ellipse = ((EllipseMapObject) mapObject).getEllipse();

        if (ellipse.width == ellipse.height) {
            CircleMapObject circleMapObject = new CircleMapObject(ellipse.x, ellipse.y, ellipse.width / 2);
            circleMapObject.setName(mapObject.getName());
            circleMapObject.getProperties().putAll(mapObject.getProperties());
            circleMapObject.setColor(mapObject.getColor());
            circleMapObject.setVisible(mapObject.isVisible());
            circleMapObject.setOpacity(mapObject.getOpacity());
            return createFixture(circleMapObject);
        }

        IllegalArgumentException exception = new IllegalArgumentException(
                "Cannot parse " + mapObject.getName() + " because " + mapObject.getClass().getSimpleName()
                        + "s that are not circles are not supported");
        Gdx.app.error(getClass().getSimpleName(), exception.getMessage(), exception);
        throw exception;
    } else if (mapObject instanceof TextureMapObject) {
        IllegalArgumentException exception = new IllegalArgumentException("Cannot parse " + mapObject.getName()
                + " because " + mapObject.getClass().getSimpleName() + "s are not supported");
        Gdx.app.error(getClass().getSimpleName(), exception.getMessage(), exception);
        throw exception;
    } else
        assert false : mapObject + " is a not known subclass of " + MapObject.class.getName();

    fixtureDef.shape = shape;
    fixtureDef.density = (Float) getProperty(properties, aliases.density, fixtureDef.density, Float.class);
    fixtureDef.filter.categoryBits = (Short) getProperty(properties, aliases.categoryBits,
            fixtureDef.filter.categoryBits, Short.class);
    fixtureDef.filter.groupIndex = (Short) getProperty(properties, aliases.groupIndex,
            fixtureDef.filter.groupIndex, Short.class);
    fixtureDef.filter.maskBits = (Short) getProperty(properties, aliases.maskBits, fixtureDef.filter.maskBits,
            Short.class);
    fixtureDef.friction = (Float) getProperty(properties, aliases.friciton, fixtureDef.friction, Float.class);
    fixtureDef.isSensor = (Boolean) getProperty(properties, aliases.isSensor, fixtureDef.isSensor,
            Boolean.class);
    fixtureDef.restitution = (Float) getProperty(properties, aliases.restitution, fixtureDef.restitution,
            Float.class);

    Fixture fixture = body.createFixture(fixtureDef);

    shape.dispose();

    String name = mapObject.getName();
    if (fixtures.containsKey(name)) {
        int duplicate = 1;
        while (fixtures.containsKey(name + duplicate))
            duplicate++;
        name += duplicate;
    }

    fixtures.put(name, fixture);

    return fixture;
}

From source file:com.dongbat.game.util.PhysicsUtil.java

/**
 * Set position for an entity//www  . ja  v  a2  s  .c o  m
 *
 * @param world artemis world
 * @param entity entity that you want to set position
 * @param position position that you want to set for entity
 */
public static void setPosition(com.artemis.World world, Entity entity, Vector2 position) {
    Body body = getBody(world, entity);
    body.setTransform(position, body.getAngle());
}

From source file:com.dongbat.invasion.util.PhysicsUtil.java

public static void setPosition(Entity entity, Vector2 position) {
    Body body = getBody(entity);
    body.setTransform(position, body.getAngle());
}

From source file:com.gmail.emersonmx.asteroids.system.PhysicSystem.java

License:Open Source License

private void processOutputEntity(Entity entity) {
    TransformComponent transform = transformMapper.get(entity);
    PhysicBodyComponent bodyComponent = physicBodyMapper.get(entity);
    Body body = bodyComponent.body;

    Vector2 position = body.getPosition();
    transform.position = ConverterUtil.unitToPixel(position);
    transform.rotation = body.getAngle() * MathUtils.radiansToDegrees;
    System.out.println("velocity: " + body.getLinearVelocity());
}

From source file:com.hajnar.GravityShip.GameWorld.java

License:Apache License

public void updateCanons() {
    int len = canons.size();
    firePauseDuration += Gdx.graphics.getDeltaTime();
    if (firePauseDuration > canonsFireInterval) {
        for (int i = 0; i < len; i++) {
            Body canonBody = canons.get(i).getBody();
            float angle = canonBody.getAngle();
            float x = -(float) Math.sin(angle);
            float y = (float) Math.cos(angle);
            bullets.add(new Bullet(box2dWorld, x * 0.8f + canonBody.getPosition().x,
                    y * 0.8f + canonBody.getPosition().y, tmpVector.set(x * 2, y * 2)));
        }/*from www.  j a va2  s . c o m*/
        firePauseDuration = 0;
    }
}

From source file:com.laex.cg2d.render.impl.EntityManager.java

License:Open Source License

@Override
public void render() {
    if (!drawEntities) {
        return;/*from  w ww .j  a  v  a  2 s .c  o  m*/
    }

    batch.begin();

    manipulator.acceptBodyVisitor(new BodyVisitor() {

        @Override
        public void visit(Body b, CGShape shape) {
            if (!(shape.getEditorShapeType() == CGEditorShapeType.ENTITY_SHAPE)) {
                return;
            }

            Vector2 pos = b.getPosition();

            // position for circle collision shape & box collision shape differ.
            CGEntity e = shapeToEntityMap.get(shape);
            CGEntityAnimation ea = RunnerUtil.getDefaultAnimation(e);

            // Position of circle should be adjusted of radius.
            if (ea.getCollisionType() == CGEntityCollisionType.CIRCLE) {
                float radius = shapeToAnimationOriginMap.get(shape).z;
                pos.x = pos.x - radius;
                pos.y = pos.y - radius;
            }

            Sprite spr = shapeToSpriteMap.get(shape);
            if (spr == null) {
                return;
            }

            spr.setPosition(pos.x, pos.y);
            // setting origin important for rotations to work properly
            Vector3 origin = shapeToAnimationOriginMap.get(shape);
            spr.setOrigin(origin.x, origin.y);
            spr.setRotation(b.getAngle() * MathUtils.radiansToDegrees);

            Animation anim = shapeToAnimationMap.get(shape);

            TextureRegion tr = anim.getKeyFrame(stateTime, true);
            spr.setRegion(tr);
            spr.draw(batch);
        }
    });

    batch.end();
}