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

标签 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 都保持不变(它本质上什么也没做)。我想要它做的是将 Sprite 的大小减半

我很确定我错过了一些明显的东西,但我被这个问题困扰的时间比我愿意承认的要长。

最佳答案

您没有正确使用 Sprite。使用sprite.draw(batch)而不是batch.draw(sprite, ...)。如果您使用batch.draw,那么SpriteBatch会将Sprite视为哑TextureRegion,并忽略其所有位置和大小参数。如果您像评论中那样手动应用它们,您不妨使用重量轻得多的TextureRegion而不是SpriteBatch。

关于java - sprite.SetScale 函数不起作用(libGDX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191490/

相关文章:

java - gradle build 与 gradle war 之间的区别

java - 如何保护 libgdx 函数 fromJson 免受错误输入的影响?

xcode - 如何制作带有图像的按钮并在 Sprite 套件中快速确定CGSize

android - 如何将 RevMob 与 LibGdx 集成

java - 如何在 Java 中提取此图像的一部分?

javascript - SVG:<use> 元素嵌套在 g 中时不起作用(用 fiddle !)

java - 如何通过 Java 与 shell session 通信

java - 在Java中,原始静态变量和静态函数存储在哪里?

java - 如果方法抛出未在方法声明中指定的异常, "throws"会发生什么

libGDX InputListener、InputProcessor、InputAdapter有什么区别