我想在玩家杀死游戏时显示一些文字在给定时间内(在Unity3d中)有3、4或5个敌人。
我在PlayerControl脚本中有一个计时器(comboTimer),该计时器在敌人被玩家射击时启动。计时器启动后,每次敌人被玩家射击,计数器(comboCounter)都会增加。另一个脚本(EnemyControl)控制当kill-counter(comboCounter)达到某个值(例如3 kills =“ Combo x3”)时如何显示适当的文本。这应该在计时器的值范围内完成。
问题在于,在大多数情况下,显示的文本为3击(“组合x3”)。即使我将waitTime增加到例如5或10秒。逻辑中有一个错误,但找不到它。
这是我的PlayerControl脚本的计时器:
public static bool comboTimerRunning = false;
public static int comboCounter;
float comboWaitTime = 1f;//1.0 Sekunden
float comboTimer;
public void ComboTimer() {
comboTimer += Time.deltaTime;
if (comboTimer > comboWaitTime)
{
ResetComboTimer();
}
}
public void ResetComboTimer () {
comboTimer = 0f;
comboTimerRunning = false;
comboCounter = 0;
}
这是控制显示文本处理的脚本(EnemyControl):
if (!PlayerControl.comboTimerRunning) {
PlayerControl.comboTimerRunning = true;
}
PlayerControl.comboCounter++;
if (PlayerControl.comboCounter >= 3) {
if (PlayerControl.comboCounter == 3) {
comboTxtObj.GetComponent<ComboTxt>().ShowComboText("Combo x3");
} else if (PlayerControl.comboCounter == 4) {
comboTxtObj.GetComponent<ComboTxt>().ShowComboText("Awesome");
} else if (PlayerControl.comboCounter >= 5) {
comboTxtObj.GetComponent<ComboTxt>().ShowComboText("Mega-Kill");
}
PlayerControl.comboTimerRunning = false;
}