在使用AnimationEvent动态增加事件时,出现了这个问题,脚本内容如下:

    public virtual void Awake()
    {
        attackedTarget = new List<Character>();
        AddAttackEvent("Z_Attack", 1 / 6f, "AttackEvent");
        AddAttackEvent("Z_Attack", 2 / 3f, "AttackEvent");
    }

    public void AttackEvent()
    {
        foreach (Character target in attackedTarget)
        {
            target.GetHit(target.attack.Value);
        }
        attackedTarget.Clear();
    }

    public void AddAttackEvent(string clipName, float frameTime, string eventName)
    {
        AnimationEvent evt = new AnimationEvent();
        evt.time = frameTime;
        evt.functionName = eventName;
        AnimationClip tClip = new AnimationClip();
        foreach (AnimationClip clip in animator.runtimeAnimatorController.animationClips)
        {
            if (clip.name.Contains(clipName))
            {
                tClip = clip;
            }
        }
        tClip.AddEvent(evt);
    }

脚本挂载的游戏物体上没有Animator组件。

解决方法:把该脚本挂载到Animation所对应Animator所在的游戏物体上。

本来是想在其他脚本上增加动画事件的,看来还是得乖乖挂载到Animator同一物体上。此时也可以利用Animation面板来直接增加动画事件。

Logo

分享最新的 NVIDIA AI Software 资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐