我使用的是libGDX,我希望让我的游戏主角在敌人触摸时闪烁x秒(失去生命)
有人能告诉我怎样才能让精灵变得盲目?
答案 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引擎中轻松使用。
希望这有帮助。