libGDX:使精灵闪烁x秒

时间:2014-08-19 19:22:04

标签: libgdx

我使用的是libGDX,我希望让我的游戏主角在敌人触摸时闪烁x秒(失去生命)

有人能告诉我怎样才能让精灵变得盲目?

3 个答案:

答案 0 :(得分:3)

这是我的解决方案,我完全按照你描述的目的使用它(当他受伤时眨眼)。

public class Blinker {
private float BLINK_TIME = 1f;
private int BLINKING_FRAMES = 4;

private boolean isBlinking;
private int blinkFrameCounter;
private float blinkTimer;

public Blinker() {
    this.blinkTimer = 0;
    this.blinkFrameCounter = 0;
    this.isBlinking = false;
}

public boolean shouldBlink(float delta) {
    if (isBlinking) {
        blinkTimer += delta;
        blinkFrameCounter++;
        if (blinkTimer < BLINK_TIME) {
            if (blinkFrameCounter % BLINKING_FRAMES == 0) {
                return true;
            }
        } else {
            blinkTimer = 0;
            isBlinking = false;
        }
    }
    return false;
}

public boolean isBlinking() {
    return isBlinking;
}

public void setBlinking(boolean isBlinking) {
    this.isBlinking = isBlinking;
}
}

使用方法: 首先初始化blinker对象;

Blinker blinker= new Blinker();
blinker.setBlinking(true);

然后只需将其添加到您的draw()方法(我假设您有单独的绘制角色的方法,您在屏幕draw method中调用),之前您画出你想要闪烁的精灵。

        if (blinker.shouldBlink(delta))
            return;

答案 1 :(得分:1)

我建议看一下这样的事情。

https://github.com/libgdx/libgdx/wiki/2D-Animation

您使用此技术并调整帧持续时间。

walkAnimation = new Animation(0.025f, walkFrames);      // #11

当您需要开始使动画更快地闪烁时。调整帧持续时间值。

public void setFrameDuration(float frameDuration)

我建议这样做,但如果你必须用它来调色....我想这很有效。

private Texture texture;
private TextureRegion region;
private Sprite sprite;
...
texture = new Texture(Gdx.files.internal("image.png"));
region = new TextureRegion(texture, 20, 20, 50, 50);
sprite = new Sprite(texture, 20, 20, 50, 50);
sprite.setPosition(100, 10);
sprite.setColor(0, 0, 1, 1);
...
batch.begin();
batch.setColor(1, 0, 0, 1);
batch.draw(texture, 10, 10);
batch.setColor(0, 1, 0, 1);
batch.draw(region, 50, 10);
sprite.draw(batch);
batch.end();

关键是如果禁用混合,则忽略Alpha。

答案 2 :(得分:1)

prgenhard之前的回答是有效的,但如果您不小心使用它,我认为这已足够了。

您可以使用TweenEngine插入具有不同功能的Alpha值。 它真的很酷。

您可以在精灵或演员的阿尔法上设置这些值,并轻松实现闪烁效果。

您可以在此处详细了解: http://www.aurelienribon.com/blog/projects/universal-tween-engine/

应该够了。 而且它也可以在Libgdx引擎中轻松使用。

希望这有帮助。