最近在搞一个小游戏(物理小),角色是圆形的,于是就想把血条也搞成环形的,环角色一圈。

实现

1. 圆形进度条

说到血条首先想到的是进度条,于是找了一下发送cocos有现成的进度条组件 ProgressBar
但是它是直的,首先要把它变成圆的:

1700804142461.png
子节点Bar中的sprite也要做同样的设置。

2. 然后在进度条上层覆盖圆形的头像

1700804491361.png

就有了环形的效果:
满血 残血

3. 实现掉血、加血

这个就比较简单了,直接设置 ProgressBar 的 progress 属性就行了

this.bloodbar.progress = 0.3

4. 血条动画

一次将 progress 设置到目标位置显得生硬,这里加一个简单的动画。

  • 掉血或加血时只处理数值:
setBlood(num: number) {
    this.currBlood += num;
    if (this.currBlood > this.maxBlood) this.currBlood = this.maxBlood;
    if (this.currBlood < 0) this.currBlood = 0;
}
  • 在 update 中调用:
bloodAnim(){
    let speed = 30;//动画速度(即动画执行多少次完成一滴血的加减),值越小越快
    if(this.bloodbar.progress == (this.currBlood / this.maxBlood))return;
    let remain = this.bloodbar.progress - this.currBlood / this.maxBlood;
    if(Math.abs(remain) <= (1/ this.maxBlood/speed)){
        this.bloodbar.progress = this.currBlood / this.maxBlood;
        return;
    }
    if(remain > 0){
        this.bloodbar.progress -= (1/this.maxBlood/speed); //血条每次变化的量:一滴血的1/30
    }else{
        this.bloodbar.progress += (1/this.maxBlood/speed);
    }
}

完结。。。

标签: cocos, Cocos Creator 3.8

添加新评论