您的位置:首页 > 新闻动态 > Unity3D

Unity3D自带动画系统教程

来源: 2017/8/9      点击:

导入人物模型,模型是不会动的,因为没有添加动画

首先给模型添加Animator组件

有的模型上自带组件,是因为我们给他设置成了人形动画,如果是普通动画就需要自己添加。添加好组件以后,我们发现上面缺少了一个animator controller(动画控制器),我们需要添加一个拖进去。在controller里面添加动画剪辑。点击进入animator视图,找到文件中的Idle动画,拖进去。橘黄色为默认动画。再拖进一个攻击动画Atrrack,右键Make Transition(创建过渡),此时运行会发现动画自动播放了,如果我们不想让动画自动过渡,我们需要给过渡添加一个条件,点击过渡线,选项卡中有一个过渡条件

但是现在过渡条件是空的,所以我们要自己创建一个过渡条件,回到左面的Parameters选项中,我们给他添加一个Triggerr(触发)条件,然后在Conditions中设置。现在Attack是一次性的动作,不会重复,所以这个动作播放完就会停止,所以我们要让Attackk回到Idle状态。连回去。我们会发现当点击Trigger后,并不会马上从Idle状态跳转到Atrrack状态,这是因为我们默认勾选了Has Exit Time

如果勾选了这个按钮,动画就会默认播放完才会播放下一个动画,如果不勾选,就会马上播放。

用代码去控制人物攻击触发条件。给人物添加C#脚本。

public class controller: MonoBehaviour {

private Animator animator;

void start(){
animator = GetCompenent();

}

void Update(){

if(Input.GetMouseButtonDown(0))

{

animator.SetTrigger("New Trigger");

}

}

} //MonoBehaviour

再添加一个人物跑动的动画并用代码控制(Run动画),因为跑是一个持续性动作,当我按住W的时候他就应该持续的跑,所以我们要设置一个Bool类型的条件。跑和停都是要马上完成,所以都不应该勾选Has Exiit Time。代码实现 :

if(Input.GetKeyDown(KeyCode.W))

{

    animatorSetBool("isBool", true);

}


if(Input.GetKeyUp(KeyCode.W))

{

    animatorSetBool("isBool", false);

}