屏幕中间的y轴
y axis in the middle of screen
嗨,我有一个简单的代码:
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture texture;
BitmapFont font;
GameObject gameObject1;
GameObject gameObject2;
@Override
public void create () {
texture= new Texture("badlogic.jpg");
batch= new SpriteBatch();
font = new BitmapFont();
font.setColor(Color.GREEN);
gameObject1= new GameObject(texture);
gameObject2= new GameObject(texture);
gameObject1.x=0;
gameObject1.y=0;
gameObject2.x=400;
gameObject2.y=400;
gameObject2.height=gameObject2.getTexture().getHeight();
gameObject2.width=gameObject2.getTexture().getHeight();
gameObject1.height=gameObject1.getTexture().getHeight();
gameObject1.width=gameObject1.getTexture().getHeight();
}
@Override
public void render () {
update();
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(gameObject1.getTexture(),gameObject1.x, gameObject1.y);
batch.draw(gameObject2.getTexture(),gameObject2.x, gameObject2.y);
//batch.draw(texture, 0, 0);
//font.draw(batch, "HELLO",400,400);
batch.end();
}
private void update() {
// TODO Auto-generated method stub
if (Gdx.input.isTouched()){
gameObject1.y=Gdx.input.getY();
gameObject1.x=Gdx.input.getX();
}
if (gameObject1.overlaps(gameObject2)){
Gdx.app.exit();
}
}
@Override
public void dispose(){
System.out.println("dispose");
batch.dispose();
texture.dispose();
font.dispose();
}
}
它正在解决一个小问题:
y 轴在屏幕中间。我向上移动手指,物体向下移动。
物体应该在我的手指下,就像镜面反射一样。
哪里出了问题?
private void update() {
// TODO Auto-generated method stub
if (Gdx.input.isTouched()){
gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
gameObject1.x=Gdx.input.getX();
}
if (gameObject1.overlaps(gameObject2)){
Gdx.app.exit();
}
}
由于以下原因,他像镜子一样移动:
gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
你得到了图形的高度,从你的高度减去你手指的y值。
y 轴在中间,所以如果你的手指在它上面,你会得到负的 y 值。
newY = height-(-y) = height + y
结果是当 oyu 移动你的手指时,对象在 y 轴上移动到你移动的负方向。
要解决它,只需切换到:
gameObject1.y=Gdx.graphics.getHeight()+Gdx.input.getY();
或使 y 位于屏幕顶部。
嗨,我有一个简单的代码:
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture texture;
BitmapFont font;
GameObject gameObject1;
GameObject gameObject2;
@Override
public void create () {
texture= new Texture("badlogic.jpg");
batch= new SpriteBatch();
font = new BitmapFont();
font.setColor(Color.GREEN);
gameObject1= new GameObject(texture);
gameObject2= new GameObject(texture);
gameObject1.x=0;
gameObject1.y=0;
gameObject2.x=400;
gameObject2.y=400;
gameObject2.height=gameObject2.getTexture().getHeight();
gameObject2.width=gameObject2.getTexture().getHeight();
gameObject1.height=gameObject1.getTexture().getHeight();
gameObject1.width=gameObject1.getTexture().getHeight();
}
@Override
public void render () {
update();
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(gameObject1.getTexture(),gameObject1.x, gameObject1.y);
batch.draw(gameObject2.getTexture(),gameObject2.x, gameObject2.y);
//batch.draw(texture, 0, 0);
//font.draw(batch, "HELLO",400,400);
batch.end();
}
private void update() {
// TODO Auto-generated method stub
if (Gdx.input.isTouched()){
gameObject1.y=Gdx.input.getY();
gameObject1.x=Gdx.input.getX();
}
if (gameObject1.overlaps(gameObject2)){
Gdx.app.exit();
}
}
@Override
public void dispose(){
System.out.println("dispose");
batch.dispose();
texture.dispose();
font.dispose();
}
}
它正在解决一个小问题: y 轴在屏幕中间。我向上移动手指,物体向下移动。 物体应该在我的手指下,就像镜面反射一样。 哪里出了问题?
private void update() {
// TODO Auto-generated method stub
if (Gdx.input.isTouched()){
gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
gameObject1.x=Gdx.input.getX();
}
if (gameObject1.overlaps(gameObject2)){
Gdx.app.exit();
}
}
由于以下原因,他像镜子一样移动:
gameObject1.y=Gdx.graphics.getHeight()-Gdx.input.getY();
你得到了图形的高度,从你的高度减去你手指的y值。
y 轴在中间,所以如果你的手指在它上面,你会得到负的 y 值。
newY = height-(-y) = height + y
结果是当 oyu 移动你的手指时,对象在 y 轴上移动到你移动的负方向。
要解决它,只需切换到:
gameObject1.y=Gdx.graphics.getHeight()+Gdx.input.getY();
或使 y 位于屏幕顶部。