2016-06-21 21 views
0

gibt es 3 Kreise, jeder Kreis ist in 3 Teile unterteilt, in denen Farbe angegeben ist, sollte jeder Kreis in entgegengesetzten Richtungen drehen. enter image description hereWie zu zeichnen Kreise libgdx

+1

Was ist deine Frage genau? Wie kann ich dieses Bild reproduzieren? – Deadpool

+0

@ Andromedae93 ja – upward

+0

Haben Sie ein Skript, um uns vorzuschlagen? – Deadpool

Antwort

0

Ok können Sie tun, diesen individuellen Bogen machen und weisen Farben zu ihnen

, wie eine benutzerdefinierten Bogen machen, ohne und Gelenk aus Zentrum:

public Arc(Color color){ 
    this.color = new Color(color); 
    renderer = super.getRenderer(); 
} 

public Color getArcColor(){ 
    return color; 
} 


/** Draws an arc using {@link ShapeType#Line} or {@link ShapeType#Filled}. */ 
public void arc (float x, float y, float radius, float start, float degrees,int segments) { 
    // int segments = (int)(6 * (float)Math.cbrt(radius) * (degrees/360.0f)); 

    if (segments <= 0) throw new IllegalArgumentException("segments must be > 0."); 
    float colorBits = color.toFloatBits(); 
    float theta = (2 * MathUtils.PI * (degrees/360.0f))/segments; 
    float cos = MathUtils.cos(theta); 
    float sin = MathUtils.sin(theta); 
    float cx = radius * MathUtils.cos(start * MathUtils.degreesToRadians); 
    float cy = radius * MathUtils.sin(start * MathUtils.degreesToRadians); 

    for (int i = 0; i < segments; i++) { 
     renderer.color(colorBits); 
     Gdx.gl.glLineWidth(width_of_line); 
     Gdx.gl.glEnable(GL20.GL_BLEND); 
     renderer.vertex(x + cx, y + cy, 0); 
     float temp = cx; 
     cx = cos * cx - sin * cy; 
     cy = sin * temp + cos * cy; 
     renderer.color(colorBits); 
     renderer.vertex(x + cx, y + cy, 0); 
    } 
} 

machen fegt in Segment von 90 bis erhalten Sie Ihre Bogen und jetzt, wie diese Bögen in Spiel Bildschirm machen tun dies einen Bogen in Ihrem Code zu machen

Arc a; 
    ... 
    ... 
    in create: 
a= new Arc(Color.RED); 
... 
in render: 
a.begin(ShapeRenderer.ShapeType.Line); 
a.arc(x,y, (float) radius, startangle, sweep, 100); 
a.end 

Dies gibt Ihnen einen Bogen und es kommt zu drehen ändern Sie Ihren Startwinkel ohne Ihren Sweep zu ändern wie startangle ++ anstelle von startangle im obigen Code, wo startangle als definiert ist float startangle = 0;

hoffe das hilft

Verwandte Themen