Unity3D:[1]animation与anmimator

作者:小小谷 | 创建时间: 2023-08-05
Animation与Animator创建动画格式是不同的,代码调用的方式也不同,不要混淆。...
Unity3D:[1]animation与anmimator

操作方法

1)Animation动画的创建方式: 先在GameObject上添加一个Animation组件。

选中添加了Animation组件的GameObject并按Ctrl+6打开动画控制器。单击动画控制器左上角,红色原点下方,选择Create New Clip创建新动画。

这个时候,创建的动画格式是这样的:

在GameObject中添加脚本,并输入以下代码控制播放动画: animation.Play("RotationY180_animation"); 其中animation是Unity3D预先设定好的,相当于Animation animation = gameObject.GetComponent<Animation>();

2)Animator动画的创建方式: 现在对象上添加一个Animator组件

选中添加了Animation组件的GameObject并按Ctrl+6打开动画控制器。单击动画控制器左上角,红色原点下方,选择Create New Clip创建新动画。

这个时候,创建的动画格式是这样的:

如果要用代码控制,要先打开Animator控制器,如图:

先创建动画之间的Transition,鼠标右键创建。

在Animator控制器的左下角,设置一个Parameters,这里设置的是Trigger

然后在你想使用这个参数的动画的Transition起点中添加这个变量。这里说的Transition起点是指之前创建Transition时,箭头的起始状态,如下图,如果你要控制的动画是RotationY180,那么你就要单击Idle,并设置。设置方式,如下图,单击transition的起始状态,在右边的Inspector中单击Transitions然后在最下面的Conditions中选择你刚刚创建的Parameters。

在添加了这个Animator组件的GameObject上添加脚本,并输入下面代码: Animator _anitor = gameObject.GetComponent<Animator>(); AnimatorStateInfo stateinfo = _anitor.GetCurrentAnimatorStateInfo(0); if (stateinfo.nameHash == Animator.StringToHash("Base Layer.Idle") && !_anitor.IsInTransition(0)) { _anitor.SetTrigger("isR1"); } 来控制动画的执行。

温馨提示

先添加动画组件,在打开动画控制器,创建动画。直接用动画控制器创建动画,会默认创建Animator
记得看清楚添加的是Animator还是Animation,再选择相应的动画控制方式。
点击展开全文

更多推荐