Vector2 v = new Vector2(touchpad.getKnobPercentX(), touchpad.getKnobPercentY()); float angle = v.angle(); runningFrame.setRotation(angle);
public boolean check_collision(Player player) { Vector2 pvector=new Vector2(player.xcenter , player.ycenter); Vector2 svector=new Vector2(this.xcenter , this.ycenter); float radi=player.radius; if( pvector.dst2(svector) < (width + radi) * (width + radi) + (height + radi) * (height + radi) )// dont check if player is too far for collision { Vector2 rvector= pvector.sub(svector);// rvector from square center to player center rvector.setangle(rvector.angle()+ this.rotation);//make sure rotations is CCW pvector=rvector.add(svector); //new player vector to check collision return new Rectangle(pvector.x-radi/2f ,pvector.y-radi/2f,radi,radi).overlaps(new Rectangle(svector.x-width/2f ,svector.y-height/2f,width,height)); //assume that player is also rectangle because we already checked worst case with if condition. } return false; }
Body body, planet; //your 'character' and planet ... Vector2 bodyCenter = body.getWorldCenter(); Vector2 planetCenter = planet.getWorldCenter(); //if you would use getPosition it would be related to the body's origin! Vector2 subVector = bodyCenter.sub( planetCenter ); body.setTransform(x, y, subVector.angle() ); //it is possible that you will need to make '-angle()' here or something!
@Override public void startAnimation(String id, Tween.Type repeatType, int count, ActionCallback cb, Vector2 p0, Vector2 pf) { startAnimation(id, repeatType, count, null); if (currentAnimation != null) { Vector2 tmp = new Vector2(pf); float angle = tmp.sub(p0).angle() + 90; lookat(angle); } }
public static float angle( final Entity a, final Entity b) { final Pos pa = (Pos)a.getComponent(Pos.class); final Pos pb = (Pos)b.getComponent(Pos.class); return tmp.set(pb.x, pb.y).sub(pa.x, pa.y).angle(); }
public static float angle( final Entity a, final Entity b) { final Pos pa = (Pos)a.getComponent(Pos.class); final Pos pb = (Pos)b.getComponent(Pos.class); return tmp.set(pb.xy.x, pb.xy.y).sub(pa.xy.x, pa.xy.y).angle(); }
public static float angle( final Entity a, final Entity b) { final Pos pa = (Pos)a.getComponent(Pos.class); final Pos pb = (Pos)b.getComponent(Pos.class); return tmp.set(pb.xy.x, pb.xy.y).sub(pa.xy.x, pa.xy.y).angle(); }
@Override public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
private void drawHoldBeam(Vector2 from, Vector2 to, float orgSize, float dstSize) { Vector2 delta = from.cpy().sub(to); float w = Math.max(orgSize, dstSize); float h = delta.len(); float tw = holdBG.getRegionWidth(); float th = holdBG.getRegionHeight(); float factorScale = (tw / w) * 0.5f; float topFactor = Math.max(dstSize - orgSize, 0f) * factorScale; float botFactor = Math.max(orgSize - dstSize, 0f) * factorScale; float[] points = { topFactor, 0f, botFactor, th, tw - botFactor, th, tw - topFactor, 0f }; PolygonRegion clamped = new PolygonRegion(holdBG, points, triangles); spriteBatch.draw(clamped, from.x - w * 0.5f, from.y, w * 0.5f, 0f, w, h, 1f, 1f, delta.angle() + 90); }
public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
@Override public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
@Override public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
@Override public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
@Override public void moveTowards(float x, float y, float speed) { TMP_SOURCE_VECTOR.set(getX(), getY()); TMP_TARGET_VECTOR.set(x, y); Vector2 direction = TMP_TARGET_VECTOR.sub(TMP_SOURCE_VECTOR).nor(); float xComponent = speed * MathUtils.cosDeg(direction.angle()); float yComponent = speed * MathUtils.sinDeg(direction.angle()); TMP_SOURCE_VECTOR.add(xComponent, yComponent); set(TMP_SOURCE_VECTOR.x, TMP_SOURCE_VECTOR.y); }
public void aimAt(int e, int at) { final Pos pa = pm.get(e); final Pos pb = pm.get(at); anm.get(e).rotation = vTmp.set(pb.xy.x, pb.xy.y).sub(pa.xy.x, pa.xy.y).angle(); } }
public void aimAt(int e, int at) { final Pos pa = pm.get(e); final Pos pb = pm.get(at); anm.get(e).rotation = vTmp.set(pb.xy.x, pb.xy.y).sub(pa.xy.x, pa.xy.y).angle(); } }
Vector2 vectorbody = new Vector2(50f, 50f); Vector2 vectorcenter = new Vector2(100f,100f); Vector2 vectordis= vectorbody.cpy().sub(vectorcenter);//Displacement vector center to body vectordis.setAngle( vectordis.angle() + rotatespeed );//Rotate speed can be negative that means it will rotates to other side. vectordis.add(vectorcenter); //vectordis now became rotated vectorbody vectorbody.set(vectordis); //vectorbody updated
@Override public boolean touchDragged(int x, int y, int pointer) { if (null != data) { Vector2 current = Engine.screenToWorld(x, y); if (rotateOn) { float angle_append = current.cpy().sub(data.position).angle() - dragTemp.sub(data.position).angle(); data.degrees += angle_append; adapter.callUI.updateToUI(data); } else { secondData = null; Vector2 offset = current.cpy().sub(dragTemp); data.position.add(offset.x, offset.y); adapter.callUI.updateToUI(data); } dragTemp.set(current); } return super.touchDragged(x, y, pointer); }
private static Body createPhysicBodies(Array<Vector2> input, World world) { BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyType.DynamicBody; Body body = world.createBody(bodyDef); for (int i = 0; i < input.size - 1; i++) { Vector2 point = input.get(i); Vector2 dir = input.get(i + 1).cpy().sub(point); float distance = dir.len(); float angle = dir.angle() * MathUtils.degreesToRadians; PolygonShape shape = new PolygonShape(); shape.setAsBox(distance / 2, Constants.THICKNESS / 2, dir.cpy() .scl(0.5f).add(point), angle); body.createFixture(shape, 1.0f); } return body; }