体力恢复问题

  • Creator 版本:

目标:做一个体力条功能当体力值为零时开始恢复
问题:当体力条满后,再次进行体力消耗后体力值不掉。
如图:ps(我设置了每次体力消耗后输出体力值)

核心代码如图:


help help help!!!

字体好评,windows teriminal同款

当体力值为0时,
update->Bariszero->等于0成立 执行scheduleOnce,时间为2s
下一帧(该时间远小于2s)
update->Bariszero->等于0成立 执行scheduleOnce,时间为2s

(2s内的update都会执行该逻辑)

2s后
progress 小于1 成立 ,progress 为0.25
progress 小于1 成立 ,progress 为0.5
progress 小于1 成立 ,progress 为0.75
progress 小于1 成立 ,progress 为1
progress 小于1不成立,progress为1
消耗体力 progress为0.75
progress 小于1成立,progress为1 (2s内消耗的体力,都会执行该逻辑)

哦,我明白了,主要是update函数执行太快了,对吧?呜呜呜,可以怎么解决啊,谢谢你了

按你的逻辑,可以不用update

/** 是否正在恢复体力 **/
private _resume = false;
private _progress = 0;
get progress(){
  return this._progress;
}
set progress(progress){
    this._progress = progress;
    if(progress < 1 && !this._resume) {
        this._resume = true;
        this.scheduleOnce(()=>{
             this._resume = false;
             this.progress = this._progress + 0.25;
        }, 2);
    }
}

当然,用update也可以,

update(dt){
    if(this._resume) {
        return;
    }
   // do something
}
// ...
let self = this;
scheduleOnce(function(){
    // ...
   self._resume = false;
}, 2)

嘿嘿嘿,谢谢你啦!

角度奇特,哈哈