一开始这可能有点复杂,但请您耐心点。我正在做一个城市模拟游戏,我想要实现的是:
准则:
healthStat自愿默认daysRemaining
.=‘1’>
.=
-35
-40
我设法解决了这个问题,但是出现了一个问题.我只能做daysRemaining的自动设置,或者手动的减少--我不能两者都做。
这是我的密码:
if (statsHealth <= -10f && statsHealth > -25f)
{
//Enable Health Hazard
isHealthHazard = true;
//Set Days Remaining
daysRemaining = 10;
}
else if (statsHealth <= -25f && statsHealth > -35f)
{
//Enable Health Hazard
isHealthHazard = true;
//Set Days Remaining
if (daysRemaining > 8 || daysRemaining <= 5)
{
daysRemaining = 8;
}
}
else if (statsHealth <= -35f && statsHealth > -40f)
{
//Enable Health Hazard
isHealthHazard = true;
//Set Days Remaining
if (daysRemaining > 5 || daysRemaining <= 2)
{
daysRemaining = 5;
}
}
else if (statsHealth <= -40f && statsHealth > -50f)
{
//Enable Health Hazard
isHealthHazard = true;
//Set Days Remaining
if (daysRemaining > 2 || daysRemaining < 0)
{
daysRemaining = 2;
}
}
else if(statsHealth >= -50f && hasIssues)
{
//GAME OVER
Debug.Log("GAME OVER!");
daysRemaining = 0;
}
else if(statsHealth >= 0)
{
//No More Health Issues
isHealthHazard = false;
}问题是,每当我的比赛一天过去,如果它在healthStat的范围内(例如:-25的healthStat范围在8-6 daysRemaining之间),它就会减少。但是,如果daysRemaining达到5,它将重置为8,因为它超出了范围(基于healthStat)。
另一方面,如果我根据healthStat的范围禁用autoSetting的daysRemaining,它将用于手动减少。但是,当玩家到达特定的daysRemaining时,我如何在第一时间设置healthStat?
我如何能够同时自动设置daysRemaining,同时能够手动调整它?
PS:我知道这可能有点混乱,所以如果你有任何进一步的询问,请随时评论,我一定会回应。谢谢!
发布于 2019-07-12 04:23:20
您需要一种方法来确定何时输入或离开健康类别,或者是否已在该类别中。添加一个变量,该变量跟踪上一个类别中的默认天数,并仅根据前一个和新的默认天数之间的差异更改所剩的天数。
此外,还要有一个布尔值来跟踪您以前是否在任何类别之外。这样,如果您以前不在任何类别之外,则只需将剩余天数设置为默认的剩余天数。
以下是这些更改的样子:
private int previousDefaultDaysRemaining;
private bool previousOutsideHealthCategory;
void Start()
{
previousDefaultDaysRemaining = 1000;
previousOutsideHealthCategory = true;
} 然后..。
// initialize to some value reasonable for not being health category.
int newDefaultDaysRemaining = 1000;
bool newOutsideHealthCategory = true;
// Determine what category of health you are in now
if (statsHealth <= -10f && statsHealth > -25f)
{
//Enable Health Hazard
isHealthHazard = true;
newOutsideHealthCategory = false;
newDefaultDaysRemaining = 10;
}
else if (statsHealth <= -25f && statsHealth > -35f)
{
//Enable Health Hazard
isHealthHazard = true;
newOutsideHealthCategory = false;
newDefaultDaysRemaining = 8;
}
else if (statsHealth <= -35f && statsHealth > -40f)
{
//Enable Health Hazard
isHealthHazard = true;
newOutsideHealthCategory = false;
//Set Days Remaining
newDefaultDaysRemaining = 5;
}
else if (statsHealth <= -40f && statsHealth > -50f)
{
//Enable Health Hazard
isHealthHazard = true;
newOutsideHealthCategory = false;
newDefaultDaysRemaining = 2;
}
// Decrease timer
daysRemaining -= 1;
if (previousOutsideHealthCategory)
{
// We were not in a category previously, just set the days remaining
daysRemaining = newDefaultDaysRemaining;
}
else
{
// reduce or increase daysRemaining by any category change
daysRemaining += newDefaultDaysRemaining - previousDefaultDaysRemaining;
}
// remember the new category's days remaining and
// our outsideHealthCategory status if either changed
previousDefaultDaysRemaining = newDefaultDaysRemaining;
previousOutsideHealthCategory = newOutsideHealthCategory;
// check for critical health status boundaries
if(statsHealth > -10 && hasIssues)
{
//GAME OVER
Debug.Log("GAME OVER!");
daysRemaining = 0;
}
else if(statsHealth >= 0)
{
//No More Health Issues
isHealthHazard = false;
} https://stackoverflow.com/questions/56999753
复制相似问题