List of usage examples for com.badlogic.gdx.physics.box2d Body getAngle
public float getAngle()
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(); }