我正在XNA Game Studio中创建一个棋盘游戏风格的游戏。其中一个“迷你游戏”需要一个计时器。我尝试了各种方法但是,我很难过。如果有人可以提供帮助,我也希望它能被一个按钮激活。这是我目前的代码:
if (orbStart)
{
int counter = 10;
int limit = 50;
float countDuration = 2f; //every 2s.
float currentTime = 0f;
currentTime += (float)gameTime.ElapsedGameTime.TotalSeconds;
if (currentTime >= countDuration)
{
counter++;
currentTime -= countDuration;
}
if (counter >= limit)
{
//Stuff
}
}
}
OrbStart
是按钮激活的布尔值。任何帮助都会很棒!
答案 0 :(得分:1)
好的,首先创建全局变量,例如:
bool isTimerOn = false;
float counter = 10; // 10 seconds
然后,当用户按下按钮时,您应该将isTimerOn更改为true,希望您知道如何操作。下一步 - 在更新方法中,从计数器值的最后一个刻度中减去经过的时间,并检查时间是否结束:
if (isTimerOn)
{
counter -= gameTime.ElapsedGameTime.Seconds;
if (counter <= 0)
doSomething();
}
哦,我注意到你也想要帮助你的按钮。首先,您应该创建一个Recentagle,其中将放置您的按钮:
Rectangle button = new Rectangle(50, 60, 100, 30);
此代码表示您的按钮左上角位于(50,60),宽度为100,高度为30.您可以真正阅读如何在此位置绘制精灵,因为它已经讨论了几个在这里。 要检查用户是否单击了我们的按钮,只需阅读有关如何处理手势并检查tap的位置是否在我们的矩形内部,这里是代码:
while (TouchPanel.IsGestureAvailable)
{
GestureSample gs = TouchPanel.ReadGesture();
switch (gs.GestureType)
{
case GestureType.Tap:
if (button.Contains((int) gs.Position.X, (int) gs.Position.Y))
isTimerOn = true;
break;
}
}
为了使其工作,还有一件事 - 你必须启用轻击手势。在LoadContent()
方法内添加:
TouchPanel.EnabledGestures = GestureType.Tap;