百花楼论坛全国_一品楼QM论坛_泻火吧论坛重庆

  • 您的位置:首页 > 新闻动态 > 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);

    }


    主站蜘蛛池模板: 南木林县| 尤溪县| 洛浦县| 博爱县| 桃园市| 鄂尔多斯市| 阳山县| 阿图什市| 方城县| 科技| 娱乐| 梓潼县| 虹口区| 延庆县| 同仁县| 高青县| 中方县| 大同市| 易门县| 尼木县| 北流市| 特克斯县| 屏山县| 恩平市| 乌鲁木齐县| 河南省| 贵港市| 大同县| 福鼎市| 沙河市| 江门市| 西乡县| 南汇区| 内乡县| 德保县| 长顺县| 定州市| 诸城市| 霞浦县| 乳源| 资溪县|