LibGdx 如何重复背景?

2023-12-13

几天前,我弄清楚了如何在 LibGdx 中进行滚动。现在我正在尝试做一些相关的事情。我想重复一下背景。我的滚动跟随一艘船(是一个 s[ace 船游戏)。背景中有一张作为纹理加载的太空照片。当船到达背景的尽头时,它会继续前进,并且不再有背景。我读过有关包装的内容,但我不太明白它是如何工作的。我这样做了:

    px=new Pixmap(Gdx.files.internal("fondo.jpg"));
    background=new Texture(px);
    background.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);

然后,在我的渲染方法中

spriteBatch.begin();
    spriteBatch.draw(background,0,0,500,50);
    drawShip();
spriteBatch.end();

当然这是不行的,它只绘制一次背景。我不知道如何使这种包装方法发挥作用。有什么帮助吗?

SOLUTION

我想到了。这不是一个很好的代码,但它可以工作。

首先我声明两个具有相同图像的纹理

 bck1=new Texture(Gdx.files.internal("fondo.jpg"));
 bck2=new Texture(Gdx.files.internal("fondo.jpg"));

我还声明了两个这样的变量来指定每个 bck 位置的 X 值

 int posXBck1=0,posXBck2=0;

然后我在 Render() 中使用它

 public void calculoPosicionFondos(){
    posXBck2=posXBck1+ANCHODEFONDO;
    if(cam.position.x>=posXBck2+cam.viewportWidth/2){
        posXBck1=posXBck2;
    }
}

Where:

ANCHODEFONDO 是我背景的宽度

Cam 是 OtrhoCam。

所以我说,如果凸轮位于 bck2 中(这意味着您再也看不到 bck1),它会更改位置,使 bck1 位于 bck2 的位置,并在下一个渲染循环中重新计算 bck2

然后只需将两者绘制回渲染模式即可。


正如泰图斯所说,不要多次加载纹理, 曾经!不管怎样,你的包装器走在正确的轨道上:

texture.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);

现在您可以仅使用带有源位置的绘制方法。源位置是您选择在纹理上绘制的区域。

batch.draw(texture, x, y, srcX, srcY, srcWidth, srcHeight)

要从右向左滚动纹理,您所要做的就是逐渐增加 srcX。因此,创建一个在 update/render 方法中递增的 int 。

int sourceX = 0;

//render() method

//Increment the variable where to draw from on the image.
sourceX += 10;

//Simply draw it using that variable in the srcX.    
batch.draw(YourTexture, 0, 0, sourceX, 0, screenWidth, screenHeight);

因为您正在包裹纹理,所以它将无限期地包裹/循环和滚动。如果游戏运行很长时间,sourceX int 可能会出现问题,因为 int 只能保存 2147483647。这需要一段时间,但您可以通过每次数字超过总图像宽度时减去图像宽度来修复它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LibGdx 如何重复背景? 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • Guice 忽略注入构造函数参数上的 @Nullable

    我正在使用 Guice v 3 0 并且有一个值被注入到构造函数中 该值可以为 null 因此我在构造函数中使用 Nullable 来自 javax annotations 注释了该参数 public MyClass Parameter1
  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try

随机推荐

  • SurfaceView 中带有 SimpleOnGestureListener 的 Android GestureDetector

    public class GameActivity extends Activity private static final String TAG GameActivity Override public boolean onTouchE
  • 如何在 Angular 中的本地存储中存储文件(2 及更高版本)

    我只想将图像或 pdf 或任何类型的文件存储在本地存储中 那么 有没有办法将文件存储在LocalStorage中呢 这是一个适用于 Angular 6 7 8 的独立服务 它在本地存储中下载 存储和检索文件 import Injectabl
  • 检测 Java 应用程序是否以 Windows 管理员身份运行

    我有一个 Java 应用程序 无论如何 我可以判断该进程是否在 Windows 7 上以管理员权限运行 我找到了一种似乎与平台无关的不同解决方案 它尝试编写系统首选项 如果失败 则该用户可能不是管理员 As 托马斯 扎托建议 您可能希望抑制
  • 使用改造上传文件时出现错误(没有此类文件或目录)

    我正在开发 Android 应用程序 我需要将带有文件的请求发布到服务器 我在用retrofit这样做 我这样做MultipartAPI 请求 然后我用Intent createChooser选择文件 当我这样做的时候问题就出现了enque
  • 使用 Storyboard 在 Mac sdk 中自定义字体

    如何在 Mac 应用程序开发中向情节提要添加自定义字体 我浏览了一些博客 并尝试添加字体书并使用故事板使用这种自定义字体开发一个 NStextfield 但这是系统相关的 我创建了 DMG 并安装在另一台计算机上 它使用默认字体 我以编程方
  • Android 列表视图填充内容的高度

    我在 xml 中定义了一个列表视图 现在我正在设置内容视图setContentView R layout topic layout 我里面有 5 个项目 目前它只填充列表视图高度的一半 但我希望它完全填充高度 这样我在底部就没有任何空间 我
  • 如何从文本文件中删除标点符号[重复]

    这个问题在这里已经有答案了 import collections import string with open cipher txt as f f f read replace replace n lower f f strip stri
  • “this”模块的源代码是做什么的?

    如果您打开 Python 解释器 然后输入 import this 如您所知 它会打印 Python 之禅 作者 Tim Peters 美丽总比丑陋好 显式的比隐式的好 简单总比复杂好 复杂总比复杂好 扁平比嵌套更好 稀疏比密集好 可读性很
  • 使用 Nexus REST API 获取给定 groupid/artifactId 的最新工件版本

    我正在尝试使用 nexus REST api 来获取最新版本的 Maven 工件 我可以使用浏览到我正在寻找的特定版本http repo local service local data index a local turbogears s
  • SQL JOIN AND OR 条件

    我有一张桌子说Cases 它使用来自的参考Workers对于三列 还有一张桌子Company工人属于哪个 下面是架构 Cases CaseID CaseNumber Worker1 Worker2 Worker3 Workers Worke
  • React 路由器在刷新后渲染组件

    这是一个奇怪的问题 但是当我尝试使用链接进行重定向时 什么也没有发生 只是 URL 发生了变化 但是当我刷新浏览器时 组件就会被渲染 我究竟做错了什么 My nav js import React from react import Nav
  • Lambda中使用的变量在计算总和时应该是最终的还是有效的最终?

    我有一张包含地图的地图 地图 gt 对于映射中的所有条目 我想计算特定键的总和 例如我的地图是这样的 Key1 Key2 Value A Z 10 10 B Z 40 10 C Y 20 10 我想基本上计算所有key2等于B的总和 所以在
  • 实际函数调用计数与 EXPECT_CALL(*mock, display()) 不匹配

    我正在打电话EXPECT CALL在模拟函数上display 但它返回运行时错误 Actual function call count doesn t match EXPECT CALL mock display output GTest
  • delphi编译器如何生成ResourceString标识符?

    我的问题是 当编译应用程序时 Delphi 编译器会生成数字标识符并将其分配给所有资源字符串 很少有文档说 当重新编 译应用程序时 会重新生成资源字符串的数字标识符 并且它们会警告依赖它 因为它可能会在之后发生变化再生 有很多第三方本地化工
  • Java 中的进程与线程

    在我读过的问题中 我们建议使用线程而不是进程 因为线程更快 我决定为我的程序使用线程来编辑维基百科中某个类别中的文章 该程序获取要编辑的文章列表 然后将文章分配给 10 个线程 通过这种方式 我每分钟可以进行 6 7 次编辑 其速度与我没有
  • 正则表达式获取长度为n的所有子串

    给定仅包含小写字母和整数的输入字符串N 我需要一个正则表达式来提取所有长度的子字符串N来自输入字符串 举个例子 let N 3 and input string baababacb 结果应该是 baa aab aba bab aba bac
  • jQuery mobile pageShow SilentScroll后,页面跳转到顶部

    我们有一个购物篮页面 其中有产品 然后是运输方式 这是一个jQuery mobile site 我想要实现的目标是 如果选择了运输方式 那么如果有页面重新加载 jQuery mobile 会跳转到div到运输方式 这是代码 滚动到运输方式
  • 使用 swift 进行场景套件内存管理

    我很困惑如何使用 swift 释放场景套件中的内存 每当我从 collada 文件创建 SCNNode 时 它 都会导入几何图形 创建物理对象 并从 jpg 文件设置材质 由于某种原因创建新对象时 这会占用 10 MB 的 RAM 即使文件
  • Visual Studio Team Services、Visual Studio 2012 项目中的 Git - 无法从构建进行部署

    可以在 Git Visual Studio 2012 Express 项目 更新 2 中良好地提交和同步 当我对构建进行排队时 团队服务 不清楚在 构建解决方案 中输入什么内容 我尝试了 sln 文件 项目文件的完整路径 典型错误 我尝试了
  • LibGdx 如何重复背景?

    几天前 我弄清楚了如何在 LibGdx 中进行滚动 现在我正在尝试做一些相关的事情 我想重复一下背景 我的滚动跟随一艘船 是一个 s ace 船游戏 背景中有一张作为纹理加载的太空照片 当船到达背景的尽头时 它会继续前进 并且不再有背景 我