【发布时间】:2019-04-05 04:30:34
【问题描述】:
两天来,我一直在尝试修复我的游戏中纹理变形和扭曲的错误。我在互联网上搜索并尝试了一些解决方案,例如使用 scene2d,但没有奏效。我该怎么办?
这个截图显示了问题:随着角色移动,有时一只眼睛比另一只眼睛大:
编辑:
当我使用 sprite.setPosition((int) sprite.getX(), (int) sprite.getY());每次在我渲染我的角色之前。
当我使用答案中的自定义视口时,我在游戏窗口上什么也看不到我做错了什么?
package com.mygdx.redHoodie;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.viewport.StretchViewport;
public class GameScreen implements Screen {
public static final int GAME_WIDTH = 800;
public static final int GAME_HEIGHT= 480 ;
SpriteBatch batch;
Background background;
public Hoodie hoodie;
public PixelMultipleViewport viewport;
OrthographicCamera camera;
public int gameMode; // 0 normalna gra, 1 level up, 2 end game
public GameScreen(){
camera= new OrthographicCamera(GAME_WIDTH,GAME_HEIGHT);
viewport = new PixelMultipleViewport(GAME_WIDTH, GAME_HEIGHT, camera);
viewport.update();
camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT);
batch = new SpriteBatch();
//klasy wyswietlane
background= new Background(this);
hoodie = new Hoodie(this);
startNewGame();
}
@Override
public void render(float delta) {
// TODO Auto-generated method stu
Gdx.gl.glClearColor(1, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.projection);
batch.setTransformMatrix(camera.view);
camera.update();
//batch.setProjectionMatrix(camera.combined);
this.update(delta);
this.batch.begin();
toRender(delta);
this.batch.end();
}
public void update(float delta){
hoodie.update(delta);
}
public void toRender(float delta){
background.render();
hoodie.render();
}
public void startNewGame(){
}
public void startNevLevel(){
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
viewport.update(width, height,false);
}
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
在不知道如何加载纹理的情况下很难计算。你能提供代码吗?可能引入了错误,或者您以意想不到的方式使用纹理。从 libgdx 社区论坛看,这似乎不是一个普遍的问题,因为那里没有人抱怨过。
-
当我在本教程theinvader360.blogspot.co.uk/2013/05/… 中进行相同的项目时,我遇到了这个错误,但当我从这个stackoverflow 问题复制粘贴解决方案时:stackoverflow.com/questions/18997013/…
-
也许您可以更详细地描述闪烁和失真的含义,因为这些术语对不同的人意味着不同的东西。例如,您刚刚链接的另一个问题似乎与精灵从一个位置到另一个位置的抖动有关,这不是我所说的闪烁。
-
我的角色有黑色的长方形小眼睛,在视口的一些线中,一只眼睛比另一只眼睛大。在 1.0 中我没有这个问题。
-
这可能与相机设置和纹理过滤模式的某种组合有关。如果您显示您的代码,也许我们可以解决。