- Creator 版本:
目标:做一个体力条功能当体力值为零时开始恢复
问题:当体力条满后,再次进行体力消耗后体力值不掉。
如图:ps(我设置了每次体力消耗后输出体力值)
核心代码如图:
help help help!!!
目标:做一个体力条功能当体力值为零时开始恢复
问题:当体力条满后,再次进行体力消耗后体力值不掉。
如图:ps(我设置了每次体力消耗后输出体力值)
核心代码如图:
字体好评,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)
嘿嘿嘿,谢谢你啦!
角度奇特,哈哈