问题描述
我正在尝试使用 libGDX 制作类似弹弓的东西.
I'm trying to make something like a slingshot using libGDX.
我的代码
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();
}
这样做我会得到输出这看起来很糟糕,如果我在我的 android 手机上调试,logcat 会被消息发送垃圾邮件
Doing this i will have the output This looks awful, and if I debug on my android phone , the logcat is spammed by the message
02-17 18:55:27.371: D/dalvikvm(7440): GC_CONCURRENT freed 1884K, 40% free 8287K/13635K, paused 15ms+2ms, total 40ms
而且滞后,当我触摸屏幕时,我有 30 fps,当我不触摸时,我有 60...
And lags, I have like 30 fps when i touch the screen , and 60 when i don't...
我还需要画粗一点的线,所以当线变大时,我必须把它加粗,看起来很酷.
I also need to draw the line with a little bit of thickness, so when the line is bigger, i will have to make it thicker, to give a cool look.
在 libgdx 中绘制简单线条的最佳方法是什么?如果我找不到任何答案,我可能会从线的一点到另一点画圈......这看起来不错,但看起来不像弹弓......
Which is the best way to draw a simple line in libgdx ? If I won't find any answer probably i'm going to draw circles from a point of the line to the other..this would look ok , but won't look like a slingshot...
有什么帮助吗?
推荐答案
我只是在 helper 或 utils 类中有这样的东西.我通常用它来调试和可视化正在发生的事情.
I just have something like this in a helper or utils class. I usually use it for debugging and visualizing whats going on.
private static ShapeRenderer debugRenderer = new ShapeRenderer();
public static void DrawDebugLine(Vector2 start, Vector2 end, int lineWidth, Color color, Matrix4 projectionMatrix)
{
Gdx.gl.glLineWidth(lineWidth);
debugRenderer.setProjectionMatrix(projectionMatrix);
debugRenderer.begin(ShapeRenderer.ShapeType.Line);
debugRenderer.setColor(color);
debugRenderer.line(start, end);
debugRenderer.end();
Gdx.gl.glLineWidth(1);
}
public static void DrawDebugLine(Vector2 start, Vector2 end, Matrix4 projectionMatrix)
{
Gdx.gl.glLineWidth(2);
debugRenderer.setProjectionMatrix(projectionMatrix);
debugRenderer.begin(ShapeRenderer.ShapeType.Line);
debugRenderer.setColor(Color.WHITE);
debugRenderer.line(start, end);
debugRenderer.end();
Gdx.gl.glLineWidth(1);
}
现在我可以轻松地从任何我喜欢的投影矩阵上画一条线.
Now I can easily draw a line from anywhere I like on any projection matrix I want.
HelperClass.DrawDebugLine(new Vector2(0,0), new Vector2(100,100), camera.combined);
你想在其他 SpriteBatch 开始和结束之外绘制.如果您想在每帧中创建很多行,最好在单独的静态方法中开始和结束 ShapeRenderer,或者将其公开并根据您的需要自行完成.
You want to draw outside the other SpriteBatch begin and end. And if you want to make a lot of lines each frame you are better off beginning and ending the ShapeRenderer in a separate static method or make it public and do it yourself depending on your needs.
显然,您可以为更多形状或更多重载创建更多方法.
Obviously you can create more methods for more shapes or more overloads.
这篇关于LibGDX 画线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)