java-点击主页按钮时,libGDX纹理消失
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-点击主页按钮时,libGDX纹理消失,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1927字,纯文字阅读大概需要3分钟。
内容图文
![java-点击主页按钮时,libGDX纹理消失](/upload/InfoBanner/zyjiaocheng/667/9a59b9a71a924fc1a33e649f4e9a1306.jpg)
我正在使用libGDX开发适用于Android的手机游戏.我注意到,当我单击“主页”按钮然后返回游戏时,玩家已经消失了.存在于舞台上的所有其他演员都存在,并且当我删除移动播放器的代码时,它也会被绘制.它仅在移动时消失.我已经进行了很多调试,有时位置似乎可以正确更新,但播放器不可见,但有时只是NaN.例如,我曾尝试在暂停功能中保存位置和速度,并在恢复功能中向播放器提供它们,但没有任何帮助.
这是我在播放器更新功能中正在做的事情:
// When these lines are removed, the app works perfectly
velocity.add(0.0f, GRAVITY);
velocity.scl(deltaTime);
position.add(velocity);
velocity.scl(1/deltaTime);
如果我在恢复功能中重新创建播放器,这甚至没有帮助
player2 = new Player(resourceManager.getRegion("player"), new Vector2(320.0f, 350.0f), 300.0f);
最后,我尝试创建完全不同的播放器对象,该对象在单击“主页”按钮后绘制.它是可见的,但不会移动:
player2 = new Player(resourceManager.getRegion("player"), new Vector2(320.0f, 350.0f), 300.0f);
解决方法:
足够有趣的是,我今天正在处理同一问题,恢复后的每个纹理(演员)都保留在屏幕上,而不是正在移动的主要演员(在我的情况下为主要演员).经过数小时的调试,我发现,当游戏状态在暂停和恢复之间改变时,render方法(我的样子)的deltaTime将为0:
@Override public void render(float deltaTime) {
update(delta);
spriteBatch.setProjectionMatrix(cam.combined);
spriteBatch.begin();
spriteBatch.draw(background, cam.position.x - (WIDTH / 2), 0, WIDTH, HEIGHT);
....
spriteBatch.end();}
deltaTime是自上次渲染起经过的时间.
从暂停到恢复,显然没有时间,因此为0.
在演员更新的链下我正在像这样更新我的主要演员
velocity.scl(deltaTime);
position.add(MOVEMENT * deltaTime, velocity.y);
它在恢复后的下一个渲染中传递为0,因此为NaN(非数字).
无论如何不确定是否有更好的方法可以解决此问题,但这是我的方法,在我的主要actor更新方法中简单检查零deltaTime并替换为非常小的.001f :(请注意后续更新deltaTime不会为零,如果语句仅在恢复后恰好被调用一次,则为零)
public void update(float deltaTime) {
if (deltaTime <= 0) {
deltaTime=.001f;
}
velocity.scl(deltaTime);
position.add(MOVEMENT * deltaTime, velocity.y);
...
}
内容总结
以上是互联网集市为您收集整理的java-点击主页按钮时,libGDX纹理消失全部内容,希望文章能够帮你解决java-点击主页按钮时,libGDX纹理消失所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。