在播放屏幕上显示纹理一会儿

时间:2013-06-30 07:06:46

标签: libgdx

我在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);

}
}

3 个答案:

答案 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);

如果你想画或不画画,请在抽奖前加上你的条件。