创造耐力再生
Create stamina regeneration
我希望我的耐力值在几秒钟后重新生成,但前提是当耐力值未与消耗它的某些功能一起使用时(否则,即使该对象同时运行或执行其他操作,它也会为耐力)
float stamina = 100;
float staminaMax= 100;
float staminaMin= 0;
Update()
stamina = Mathf.Clamp (stamina, staminaMin, staminaMax);
if (stamina<staminaMax) && (maybe condition to indicate time passed since last consumption ??)
stamina = (stamina + (10.0f * Time.DeltaTime));
将耗尽耐力移到单独的方法中,您可以在其中重置计时器,并使用此计时器来确定是否要补充耐力
类似的东西:
float timer;
void Update(){
timer -= Time.deltaTime;
if(timer <= 0f){
stamina += staminaRefillRate * Time.deltaTime;
}
}
public void UseStamina(float amount){
stamina -= amount;
timer = staminaRefreshCooldown;
}
这只是一个概念证明,它仍然需要实现一些变量并处理最小值和最大值
我还强烈建议您使用 unity serialization 而不是硬编码值 - 它更容易改变平衡并允许您放置使用一种行为但具有不同数字配置的对象
我希望我的耐力值在几秒钟后重新生成,但前提是当耐力值未与消耗它的某些功能一起使用时(否则,即使该对象同时运行或执行其他操作,它也会为耐力)
float stamina = 100;
float staminaMax= 100;
float staminaMin= 0;
Update()
stamina = Mathf.Clamp (stamina, staminaMin, staminaMax);
if (stamina<staminaMax) && (maybe condition to indicate time passed since last consumption ??)
stamina = (stamina + (10.0f * Time.DeltaTime));
将耗尽耐力移到单独的方法中,您可以在其中重置计时器,并使用此计时器来确定是否要补充耐力 类似的东西:
float timer;
void Update(){
timer -= Time.deltaTime;
if(timer <= 0f){
stamina += staminaRefillRate * Time.deltaTime;
}
}
public void UseStamina(float amount){
stamina -= amount;
timer = staminaRefreshCooldown;
}
这只是一个概念证明,它仍然需要实现一些变量并处理最小值和最大值 我还强烈建议您使用 unity serialization 而不是硬编码值 - 它更容易改变平衡并允许您放置使用一种行为但具有不同数字配置的对象