LibGDX tracer une ligne
Je suis en train de faire quelque chose comme une fronde à l'aide de libGDX.
Mon code
if (Gdx.input.isTouched()) {
ShapeRenderer sr = new ShapeRenderer();
sr.setColor(Color.BLACK);
sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeType.Line);
sr.line(player.getLeft().x, player.getLeft().y,
Global.game_touch_position.x, Global.game_touch_position.y);
sr.line(player.getRight().x, player.getRight().y,
Global.game_touch_position.x, Global.game_touch_position.y);
sr.end();
}
Faire ce que j'aurai la sortie
C'est horrible, et si je debug sur mon téléphone android , le logcat est spammé par le message
02-17 18:55:27.371: D/dalvikvm(7440): GC_CONCURRENT freed 1884K, 40% free 8287K/13635K, paused 15ms+2ms, total 40ms
Et gal, j'ai 30 fps quand je touche l'écran , et 60 quand je n'en ai pas...
J'ai aussi besoin de tracer la ligne avec un peu d'épaisseur, de sorte que lorsque la ligne est plus grand, je vais devoir le rendre plus épais, pour donner un look cool.
Qui est la meilleure façon de tracer une ligne simple dans libgdx ?
Si je ne peux pas trouver une réponse sans doute, je vais dessiner des cercles à partir d'un point de la ligne à l'autre..ce serait un look ok , mais ne pas ressembler à un lance-pierre...
Toute aide?
ShapeRenderer
chaque image de rendu. Essayez de créer une fois dans le constructeur de la place.Mais comment dois-je tracer la ligne à thinkness?
Généralement essayer d'avoir une seule question par post. DONC, est conçu autour de cela. De toute façon, voir stackoverflow.com/questions/16680908/... pour l'épaisseur de la ligne.
OriginalL'auteur Boldijar Paul | 2014-02-17
Vous devez vous connecter pour publier un commentaire.
J'ai juste quelque chose comme cela dans un helper ou utils classe. J'ai l'habitude de l'utiliser pour le débogage et la visualisation de ce qui se passe.
Maintenant je peut facilement tracer une ligne à partir de n'importe où j'aime sur toute matrice de projection que je veux.
Vous souhaitez dessiner en dehors de l'autre
SpriteBatch
de début et de fin. Et si vous voulez faire beaucoup de lignes de chaque image, vous êtes mieux de début et de fin de la ShapeRenderer dans une autre méthode statique ou le rendre public et de le faire vous-même en fonction de vos besoins.Évidemment, vous pouvez créer plus de méthodes pour des formes plus ou plus les surcharges.
OriginalL'auteur Madmenyo
Vous pouvez définir l'épaisseur de la ligne en appelant
Gdx.gl10.glLineWidth(width_in_pixels)
.vous pouvez dessiner la texture à la place. Par exemple, l'étirement de la source de la texture avec la "ligne" avec motif taille
[1px]x[16px]
à[line_length]x[16px]
et faites-le pivoter pour s'adapter à commencer et ent points (à l'aide deMath.atan2
). Je pourrais donner un peu de code plus tard.Pourquoi la ligne est plus épais sur mon téléphone? J'ai utilisé la largeur de 10
veuillez consulter cette réponse: stackoverflow.com/a/16693065/1643900
OriginalL'auteur desertkun
ShapeRenderer a une méthode appelée rectLine() qui dessine une ligne avec une épaisseur spécifiée. C'est exactement ce que vous recherchez avec votre ligne de l'épaisseur de la question. Vous aurez aussi envie de changer de sr.commencer(ShapeType.Ligne) à la sr.commencer(ShapeType.Rempli)
Oui...un créer de nouveaux objets dans la méthode render n'est pas la meilleure chose pour un jeu. Et j'étais tellement excité que je savais exactement comment répondre à une question sur de SORTE que je ne pouvais pas résister. Même si la question est âgé de 10 mois...
Je me souviens de la sensation de bro! 🙂
Btw, je pense que votre réponse est fausse, shapetype.garnie de dessiner tout rempli des formes telles que des cercles, des rectangles, pas de lignes, vraiment, vous ne pouvez pas remplir une ligne.
Je l'utilise dans mon jeu en ce moment. J'ai juste comparé ligne et rempli. Remplir est certainement ce que vous voulez pour ShapeRenderer.rectLine(). Il travaille pour ShapeRenderer.ligne() de la même manière que shaptype.ligne, mais elle est probablement beaucoup moins efficace.
OriginalL'auteur Eric Christensen