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 如何重复背景? 的相关文章

  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • 排除apk文件中的预定义资源

    排除apk文件中的预定义资源 我用 Android Studio 创建了一个空白项目 然后生成 apk 文件 查看该文件内部 我可以看到 在 res drawable 文件夹中 有许多不需要的文件 例如 abc ic clear holo
  • onclick 监听器(this)是什么意思?

    btn Login setOnClickListener this 在安卓工作室 我在无数地方见过这种情况 这是什么意思 我知道该怎样this运行 但是监听者叫什么 这个例子来自 Link https stackoverflow com q
  • 如何将 YYYY-MM-DDTHH:mm:ss.SSSZ 格式的时间转换为默认时区? [复制]

    这个问题在这里已经有答案了 我得到的时间格式为 2011 07 31T08 16 37 733Z 实际上Z应该是时区 然后将该时间转换为本地时区 我现在如何实际将此时间转换为默认时区 RFC 3339 描述了一个特定的ISO 8601 ht
  • 有哪些好方法可以控制 GridBagConstraints?

    我对 Swing 编程有点陌生 我发现尽管我很喜欢 GridBagLayout 的强大功能 但如果您有很多组件 那么就会有很多代码行只是设置布局的约束 除了使用可视化编辑器之外 还有哪些好方法可以控制这种情况 请记住 当您添加GridBag
  • 打破java中的递归

    递归有点像 分而治之 的风格 它在变得更小的同时分裂 树数据结构 我希望它在发现违规时完全中断 这意味着打破所有递归路径 并返回 true 这可能吗 无论你做什么 你都必须释放堆栈 这留下了两个选择 魔法返回值 正如汤姆之一所描述的 抛出异
  • Play 框架 - 如何使用“IN”查询模型?

    如何在 Play Framework 的模型查询中获得相同的结果 SELECT FROM MyModel WHERE status IN 1 5 8 ORDER BY createdAt 你有没有尝试过 MyModel find statu
  • 如何用JDT获取封闭的方法节点?

    当我有一个调用 bar 的方法 foo 时 如何从 MethodInspiration 节点 或方法中的任何语句 表达式 获取 foo AST 节点 例如 我需要从 b bar 知道 IMethod foo public void foo
  • 如何将.txt文件转换为Hadoop的序列文件格式

    有效利用 Map Reduce 作业Hadoop http hadoop apache org 我需要将数据存储在hadoop的序列文件格式 http hadoop apache org common docs current api or
  • 如何使用 jython 将参数传递给 java 中的 python 脚本

    我正在尝试使用 jython 在 java 中执行我的 python 脚本 重要的是我需要使用 jython 将命令行参数传递给我的脚本 例如myscript py arg1 arg2 arg3 这里有一个类似的问题 在 Java 中将参数
  • 如何在Java中创建关联列表?

    我正在尝试让用户输入String在列表中搜索值 这工作正常 但我也想要String具有数值 这样我就可以得到清单价格中的某些商品 我试过 public List
  • 在 Play 上强制实施 SSL!框架

    我目前正在使用 Play 1 2 2 及其新的 Netty 客户端框架 尽管可以让 HTTP 和 HTTPS 异步服务 但我还没有找到一种简单的方法来强制执行 SSL 有没有人使用过 Play 有强制实施 SSL 的简单方法吗 不确定我是否
  • HHH000513:升级到 Hibernate 6 后无法为实体创建 ReflectionOptimizer

    最近从 Hibernate 5 升级到 6 我在调试级别看到以下错误 12 36 11 892 main DEBUG org hibernate bytecode internal bytebuddy BytecodeProviderImp
  • Eclipse 编辑器打不开

    我的 Eclipse 无法显示编辑器窗口 Error 无法打开编辑器 无法实例化编辑器类 这通常表明缺少无参数构造函数或者 编辑器的类名在plugin xml 中输入错误 Notes 我对 C 和 Python 使用不同的 Eclipse
  • 光学标记阅读器的开源库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想要一个用于光学标记读取 OMR 的开源库 有这样的库吗 我想在我的 java 应用程序中使用这个库 zxing 可能对你有用 http
  • Swagger 3.0.0:如果没有 SwaggerConfig 和 @Profile,则无法在生产中禁用

    我正在从 2 x 升级到 SpringFox Swagger 3 0 0 它引入了 Spring Boot 启动器springfox boot starter消除了对基于 2 x 的需要的依赖性SwaggerConfig NO LONGER

随机推荐

  • 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 船游戏 背景中有一张作为纹理加载的太空照片 当船到达背景的尽头时 它会继续前进 并且不再有背景 我