sprite.SetScale函数不起作用(libGDX)

时间:2016-03-24 01:01:56

标签: java libgdx sprite

您好我正在尝试使用libGDX制作一个简单的游戏,但是我在使用sprite类时遇到了一些麻烦,这是我的代码:

package com.carebearer;

import com.badlogic.gdx.ApplicationAdapter;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;


public class demo extends ApplicationAdapter{
    SpriteBatch batch;
    Texture img;
    Sprite sprite;

    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("hello.png"); 
        sprite = new Sprite(img);
        sprite.setScale(.5f);
        sprite.setPosition(Gdx.graphics.getWidth()/2 - sprite.getWidth()/2, 
                           Gdx.graphics.getHeight()/2 - sprite.getHeight()/2);

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0, 0, 0, 1); //RGBAlpha, 1 = 100%
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(sprite, sprite.getX(), sprite.getY()); 
        batch.end();
    } 
   }

问题是setScale函数。

我是否使用setScale绘制的精灵保持不变(它基本上什么都不做)。我想要它做的是将Sprite的大小减半。

我很确定我错过了一些显而易见的东西但是我已经比这个问题更加坚持了这个问题。

1 个答案:

答案 0 :(得分:1)

你没有正确使用Sprite。使用sprite.draw(batch)而不是batch.draw(sprite, ...)。如果你使用batch.draw,那么SpriteBatch会将Sprite视为一个愚蠢的TextureRegion,并忽略其所有位置和大小参数。如果你像在评论中那样手动应用它们,你也可以使用更轻量级的TextureRegion而不是SpriteBatch。