Unity 利用animator制作通用伞形攻击范围,3d血条等等

如何做一个通用0-180度的攻击扇形?

攻击扇形我让美术k动画,从中间开始两边扩展90度这个动画,这就是一个从0度展开180的扇形动画

然后感觉扇形角度算出比例,就能知道是哪一帧,只要固定这一帧

怎么固定某一帧播放,下面就会介绍一些接口

animator的播放接口

public void Play(string stateName, [Internal.DefaultValue("-1")] int layer, [Internal.DefaultValue("float.NegativeInfinity")] float normalizedTime);

主要看normalizedTime,这个就是某个百分比乘以动画时间作为开始帧播放动画,取值(0-1),不过需要负数才是第一帧上面说的

手动更新aniamtor

这里又出现另外一个问题,正常直接调用开始播是不会固定一帧

这里我们要执行手动更新动画

animator.Update就是手动更新动画控制器,前提我们要把animator enable设为false

原理:根据计算出来参数让动画固定一帧

 

下面是具体写法

public class testAnimation : MonoBehaviour
{
    public float percent;
    private float LastPercent;
    public Animator anim;
    // Start is called before the first frame update
    void Start()
    {
        anim.enabled = false;
    }

    // Update is called once per frame
    void Update()
    {
        if(LastPercent != percent)
        {
            anim.Play("New Animation", 0, percent);
            anim.Update(0);
        }
    }
}

下面是效果图,我用两条长方体代替扇形(动画制作能力有限)

Unity 利用animator制作通用伞形攻击范围,3d血条等等_第1张图片

我主要说一个思路实现,工程就不用放

类似可以做3d血条,只要美术做好0-1的血条变化过程就可以

你可能感兴趣的:(战斗相关,3d血条,通用攻击扇形,攻击扇形)