0

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

}
}
4

3 回答 3

1

或者可以只使用汽车距离

if(herocar.position.x<50&&canShowTute)
{
fon.draw(batcher,string,posx,posy);
}
 else if(herocar.position.x>50&&canShowTute)
 {
canShowTute=false;
  }

这样你就不必管理状态时间的变量

此外,如果汽车越过一定距离而不是管理,下次不需要再显示tute。

于 2013-06-30T15:07:23.867 回答
0

如果您说的是纹理的 alpha,那么这可能会有所帮助。制作

Sprite sprite = new Sprite(Assets.speeding_upregion); 

在构造函数中。并在渲染周期

float step = 0; 
float speed = 5; 
float alpha = 0; 
step = alpha > .9f ? -speed : alpha < .1f ? speed : step; alpha += step * deltaTime; 

sprite.draw(spritebatch, alpha);

如果您想绘制或不绘制,请在绘制之前添加您的条件。

于 2013-06-30T16:36:05.187 回答
0
if(tuteStateTime >= 0.56f){
 tuteStateTime = 0; //--------------wrong
 tuteState = TUTE_STATE_HIDE;
 }

不设置

tuteStateTime = 0

因为如果您将其设置为 0,那么在下一个周期中它将检查 time > 0.56f ,然后它会进入 else 块并设置 state = show......因此您的教程将永远不会消失。它将始终保持显示状态。

于 2013-06-30T13:51:22.880 回答