我在libgdx中制作游戏。我想在游戏开始时显示教程并在几秒钟后消失。我的代码如下所示
public class HeroCar{
static final int TUTE_STATE_SHOW = 0;
static final int TUTE_STATE_HIDE = 1;
int tuteState;
float tuteStateTime = 0;
public HeroCar()
{
tuteState = TUTE_STATE_SHOW;
}
public void update(float deltaTime){
if(tuteStateTime >= 0.56f){
tuteStateTime = 0;
tuteState = TUTE_STATE_HIDE;
}
else{
tuteState = TUTE_STATE_SHOW;
}
tuteStateTime += deltaTime;
}
and in game play screen class render method my code is
if(world.heroCar.tuteState == HeroCar.TUTE_STATE_SHOW){
spriteBatch.draw(Assets.speedingup_region, 480 / 2 - 172 / 2, 400, 172, 30);
}
}
答案 0 :(得分:1)
或者可以使用汽车距离
if(herocar.position.x<50&&canShowTute)
{
fon.draw(batcher,string,posx,posy);
}
else if(herocar.position.x>50&&canShowTute)
{
canShowTute=false;
}
这样你就不必管理状态时间的变量
此外,如果汽车越过了一个距离,那么下次不再需要显示Tute。
答案 1 :(得分:0)
if(tuteStateTime >= 0.56f){
tuteStateTime = 0; //--------------wrong
tuteState = TUTE_STATE_HIDE;
}
donot set
tuteStateTime = 0
因为如果你将其设置为0,那么在下一个周期中它将检查时间&gt; 0.56f,然后它转到else块并设置state = show ......因此你的教程永远不会消失。它将始终保持显示状态。
答案 2 :(得分:0)
如果你在谈论纹理的alpha,那么这可能会有所帮助。 制作
Sprite sprite = new Sprite(Assets.speeding_upregion);
在constuctor中。并在渲染cyle
float step = 0;
float speed = 5;
float alpha = 0;
step = alpha > .9f ? -speed : alpha < .1f ? speed : step; alpha += step * deltaTime;
sprite.draw(spritebatch, alpha);
如果你想画或不画画,请在抽奖前加上你的条件。