GVKun编程网logo

java-libGDX-通过SpriteBatch结果翻转绘制纹理

23

在本文中,我们将给您介绍关于java-libGDX-通过SpriteBatch结果翻转绘制纹理的详细内容,此外,我们还将为您提供关于#翻译#Java多玩家libgdx教程、android–libGDX

在本文中,我们将给您介绍关于java-libGDX-通过SpriteBatch结果翻转绘制纹理的详细内容,此外,我们还将为您提供关于#翻译# Java 多玩家 libgdx 教程、android – libGDX IntelliJ IDEA无法访问com.badlogic.gdx.Application、android – 居中纹理LibGDX、android游戏开发框架libgdx的使用(完)—杂谈Libgdx的知识。

本文目录一览:

java-libGDX-通过SpriteBatch结果翻转绘制纹理

java-libGDX-通过SpriteBatch结果翻转绘制纹理

当我尝试使用SpriteBatch绘制纹理时,结果是这样的翻转:

这是我的工作:
我创建MyRect对象,该对象绘制边界矩形和图像.

这里是MyRect类的预览:

public class MyRect {
private Vector2 position;
private int width;
private float height;

private Texture img;
private Sprite sprite;

public MyRect(int x, int y, int width, int height){
    img = new Texture("badlogic.jpg");
    sprite = new Sprite(img);

    position = new Vector2(x,y);
    this.width = width;
    this.height = height;
}

public void draw(ShapeRenderer shapeRenderer, SpriteBatch batch){
    // Gdx.gl.glClearColor(0, 0, 0, 1);
    // Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shapeRenderer.begin(ShapeType.Line);

    // Draw Background color
    shapeRenderer.setColor(55 / 255.0f, 80 / 255.0f, 100 / 255.0f, 1);
    shapeRenderer.rect(position.x, position.y, width, height);

    shapeRenderer.end();

    batch.begin();
    // batch.disableBlending();
    batch.draw(img, position.x, position.y, 
            width, height);
    batch.end();
}
}

参数ShapeRenderer和SpriteBatch通过GameScreen类传递.

GameScreen预览:

public class GameScreen implements Screen{
private MyRect myRect;
private ShapeRenderer shapeRenderer;
private SpriteBatch batch;
private OrthographicCamera cam;

public GameScreen(){
    myRect = new MyRect(10,10,50,50);

    int gameHeight=100;
    cam = new OrthographicCamera();
    cam.setToOrtho(true, 136, gameHeight);

    batch = new SpriteBatch();
    batch.setProjectionMatrix(cam.combined);

    shapeRenderer = new ShapeRenderer();
    shapeRenderer.setProjectionMatrix(cam.combined);
}

@Override
public void render(float delta) {
    // Todo Auto-generated method stub
    myRect.draw(shapeRenderer, batch);
}
}

为什么会这样呢?我做错了吗?

解决方法:

您的相机颠倒了,因为您在其上调用了setToOrtho(true,…)而不是setToOrtho(false,…)

使用倒置摄像头是有效的(如果以前使用过Flash或其他Y倒置系统,可能会更舒适),但随后需要翻转所有TextureRegions(又名Sprites):sprite.flip(错误,正确).另外,您可以使用TexturePacker创建一个TextureAtlas(在libgdx文档中查找)并设置flipY选项,以便它为您提前翻转它们.最终,为了提高性能,您仍然需要使用TextureAtlas.

顺便说一句,当您开始绘制MyRect的多个实例时,您需要将spriteBatch.begin()和end()以及shapeRenderer.begin()和end()从单个MyRect的draw方法中移出,否则您将遇到性能问题.因此,将需要两种绘制方法(一种用于精灵批处理,一种用于形状渲染器).

#翻译# Java 多玩家 libgdx 教程

#翻译# Java 多玩家 libgdx 教程

StartScreen java multiplayer libgdx tutorial

我们如何去做?

  • 在 libgdx 的主页修改 libgdx 样本 “superjumper".

  • 使用 AppWarp Cloud 将它转化为 2 个玩家的实时游戏.

  • 本游戏将匹配玩家并且用户需要到达城堡来赢得游戏的胜利.

  •  用户将获得其他用户成绩的实时反馈以增加了游戏的刺激性。


android – libGDX IntelliJ IDEA无法访问com.badlogic.gdx.Application

android – libGDX IntelliJ IDEA无法访问com.badlogic.gdx.Application

我用libGDX setup ui创建了一个项目.该
项目在 Eclipse中运行良好,但是当我在 Android Studio中导入它时,
android项目MainActivity.java抛出4个异常:
java: cannot access com.badlogic.gdx.Application
class file for com.badlogic.gdx.Application not found

java: cannot find symbol
symbol:   variable super
location: class com.vestrel00.nekko.MainActivity

java: cannot find symbol
symbol:   method initialize(com.vestrel00.nekko.KFNekko,com.badlogic.gdx.backends.android.AndroidApplicationConfiguration)
location: class com.vestrel00.nekko.MainActivity

java: method does not override or implement a method from a supertype

有没有人有办法解决吗?

解决方法

所以我已经解决了我的问题:我刚刚将libGdx.jar文件添加到我的桌面和android项目中.

解:

右键单击项目>打开模块设置>图书馆>小绿色按钮(新项目库Alt插入)> Java>然后选择libGdx.jar文件.之后,您必须将此库包含在桌面和Android项目中.

不要关闭窗口,选择模块> android>依赖性> <小绿色按钮>模块依赖关系并选择主项目.对桌面执行相同操作并按确定. 就这样.我的所有项目现在都正常工作. 这是一个图片教程.它也解释了如何运行桌面项目. http://imgur.com/a/IBFIV

android – 居中纹理LibGDX

android – 居中纹理LibGDX

我试图在LibGDX中居中256px X 256px图像.当我运行我正在使用它的代码时,会在窗口的右上角渲染图像.对于相机的高度和宽度,我使用Gdx.graphics.getHeight();和Gdx.graphcis.getWidth(); .我将摄像机的位置设置为摄像机的宽度除以2并将其高度除以2 ……这应该将它放在屏幕中间吗?当我绘制纹理时,我将它的位置设置为相机的宽度和高度除以2 – 所以它是居中的……所以我想.为什么图像不在屏幕中央绘制,有什么我不理解的东西?

谢谢!

解决方法:

听起来好像你的相机还可以.
如果设置纹理位置,则设置该纹理左下角的位置.它没有居中.因此,如果将其设置为屏幕中心的坐标,则其延伸将覆盖该点的右侧和顶部的空间.要使其居中,您需要从x中减去一半纹理宽度,并从y坐标中减去一半纹理高度.这些方面的东西:

image.setPosition(Gdx.graphics.getWidth()/2 - image.getWidth()/2, 
Gdx.graphics.getHeight()/2 - image.getHeight()/2);

android游戏开发框架libgdx的使用(完)—杂谈Libgdx

android游戏开发框架libgdx的使用(完)—杂谈Libgdx

写在最前面

仔细看看,上一篇博文是10月5号了,有很长的时间没有写博客了。

升入大三以后时间愈发的少了,要忙着各种事情,也在纠结该继续读书还是找工作,读书是读国内的还是读国外的…

libgdx这个系列的文章开篇一年有余了,期间得到了很多朋友的鼓励和意见,总的来说感觉还是蛮不错的。

想了很久,我决定给这个系列的文章画上一个句号。

就原因来说是多方面的:

第一是libgdx的版本从0.92到了今天的0.97版本,虽然总体架构变化不大,但是细节上的接口还是有很多差异了,早期的一些文章的实例代码可能无法直接运行了,我又没有精力细细检查和修改,可能新入手的朋友们会遇到一些问题。

第二就是这个系列本身的问题,我开始写的时候也没有想什么具体的东西,就是有一篇写一篇的,整个系列来看没有一种整体的驾驭性,继续写下去我感觉意义不大。

第三就是个人原因了,我其实并没有做过太多的游戏开发,当初接触libgdx也是相当偶然的原因。一些对于游戏开发更深入的东西我没有研究,不敢随意写出来。

文章接下来的内容是一些极为零碎的东西,希望能够有所用处。

Libgdx是什么

我最感到庆幸的就是这个系列的文章的标题【android游戏开发框架libgdx的使用】,虽然最开始了解不深入,但是这个标题却是正确的。

Libgdx是一个游戏开发框架,它不是一个游戏引擎。

它的主要代码是java,其中对于效率要求较高的部分是由C和C++写成的。

它是跨平台的,支持Windows、Mac OS、Linux、Android(1.5+)、GWT,它对IOS的支持是基于MonoTouch和IKVM。

它是免费的,基于Apache License 2.0协议。

Libgdx的优势是什么?我为什么选择它?

说实话,现在的游戏框架和引擎有很多,选择的面也很广。比如庞大的cocos2d家族。

如果你的主要语言是Java,那么推荐你使用Libgdx。

如果你主要涉足Android游戏领域,那么推荐你使用Libgdx。它可以方便的在桌面环境调试你的游戏逻辑,你可以轻松地和那个缓慢的模拟器说拜拜了。

如果你希望更自由的开发,你希望控制和掌握你的代码,那么推荐你使用Libgdx。它的封装比较低级,你可以基于它开发自己的游戏引擎,而不是接受其他引擎的那套模式和理论。当然你不想太底层但又希望一定的自由,2D的UI库和Stage给出了一套简单的解决方法。

如果你追求高效,那么推荐你使用Libgdx。也许你带着有色的眼光…这货是Java的吧!好吧,我也没有做个相关的测试,不过推荐你看看这篇文章,它比较了主流的游戏框架的方方面面。

Libgdx好用吗?比起XX怎么样?

我经常在QQ和Email里面看到这样的询问,说实话,我觉着这种问题意义不大。首先我没有深入的研究过其他的游戏框架和引擎,不敢断言。其次个人的喜欢和需求是不同的,也许你喜欢Libgdx的这套API设计,也许你就是看不惯某种设计模式,这种问题很难有标准的答案,甚至常常引起争端。

如果你想知道哪款开发框架或引擎适合你,你可以都试试再做出选择。如果你觉得没有时间或者这个功夫,那就双眼一闭,随便选一个吧。

Libgdx的使用广吗?有哪些游戏使用了它?

我清楚问这个问题的人的意思和顾虑。但是我觉得一款游戏的好坏和它使用什么技术手段开发没有大的关系。游戏的美工,构思设计还有宣传等等都会有很大的影响。

当然使用广泛与否一定程度上关系着反馈的快捷和获取帮助的难易程度。我只能告诉你社区很活跃,任何问题都不会拖过半天(起码我遇到的情况是这样的)。我原来看过一个国外的网站,它统计了市场中的游戏使用了第三方库的情况,Libgdx的排名在20位以内,具体的数据和网址我记不清楚了。

如果你想知道什么游戏使用了Libgdx,你可以去社区看看,有一个列表专门收集基于Libgdx的游戏。如果你硬要我举个例子,不知道Google最近吸引不少眼球的Ingress能不能满足你的心理期待。

Libgdx支持中文吗?

很遗憾的告诉你不完全支持。不完全支持的意思是原生不支持,但是你可以通过一些办法实现。你可以使用Herio或者TTF字库。

Libgdx的缺点那么那么多…

如果你真心实意的问这个问题,那么我只能说你可以选择别的,或者发挥你的实力改造它。

但是有些时候请先仔细琢磨琢磨再开口。我不止一次的看到了类似的问题:

  • Libgdx使用的图片宽与高皆为2的整数次幂,好麻烦
  • Libgdx的文档好少
  • Libgdx没有场景过渡效果
  • Libgdx没有XX功能

我应该如何开始

群上比较常见的问题就是 我是新手,我应该怎么学习Libgdx。

我个人来看最好的例子就是官方的Wiki,从理念到搭建环境再到每个细节都有说明和介绍,可以先从那里入手有个基本的了解。

然后就是官方的Demo,可以看看怎么编写一个个完整的项目。不过这里注意一个问题,Demo的风格不敢说迥异,但也算各有不同。参考的时候一定多注意。

哪里可以获取帮助

遇到问题的时候我推荐自己多想想,如果要获取帮助的话可以去论坛问,如果不习惯英文可以去群上问:

Libgdx游戏引擎(1群)(148848483)

Libgdx游戏引擎(3群)(187378034)

从字面看应该有2群的,不过我没有加…还有其他群的话欢迎大家在下面留言。

总的来说QQ群还是比较活跃的。

除了我之前的文章可以参考意外,我推荐Mkey libgdx系列教程,虽然没有很完整的体系,但是给出很多细节的解决方法。同时推荐这个项目https://code.google.com/p/c2d-engine/,它是基于Libgdx的,感觉看着不错,起码它给出了一部分人特别想要的场景切换的解决方案。

一些其他想法

最近接触了Markdown,感觉就网络分享方面比Latex方便,同时又看了很多关于游戏设计和其他引擎的理念的文献,想把之前的东西整理一下做成一个稍微成体系的Libgdx中文文档出来。

不过具体的题目和结构还在构想就是了…

组织方式和一部分内容已经完成,阅读地址是http://libgdx.sinaapp.com/index.html,项目地址是https://github.com/htynkn/way-of-libgdx

最后这个以前文章的一个离线版本(不是我打包的哈),大家不想看在线看的话可以下载,不过我觉得效果不怎么好就是了。

下载地址:http://pan.baidu.com/share/link?shareid=168280&uk=4127624209


原文链接: http://www.cnblogs.com/htynkn/archive/2013/01/04/libgdx.html

今天关于java-libGDX-通过SpriteBatch结果翻转绘制纹理的介绍到此结束,谢谢您的阅读,有关#翻译# Java 多玩家 libgdx 教程、android – libGDX IntelliJ IDEA无法访问com.badlogic.gdx.Application、android – 居中纹理LibGDX、android游戏开发框架libgdx的使用(完)—杂谈Libgdx等更多相关知识的信息可以在本站进行查询。

本文标签: