当前位置: 代码网 > it编程>游戏开发>动画 > unity人物基础动画应用。行走、待机之类的简单动画切换。

unity人物基础动画应用。行走、待机之类的简单动画切换。

2024年08月03日 动画 我要评论
[TOC]unity人物基础动画应用。

@[toc]unity人物基础动画应用

1.将动画或带有动画的,模型导入到unity

直接将项目拖入资源层级就好。这里推荐一个网站,可以给导入网站的模型自动绑骨,并且可挑选动画下载。网站自身也带有很多模型可以直接下载。免费又好用,就是可能网有点慢。
链接: link

2.创建动画控制器以及动画控制器设置

1)在项目管理器中右键->创建->动画控制器。双击新建的文件就会弹出动画器的控制界面啦。请添加图片描述
2)将动画拖取到动画器中。第一个拖进去的动画将呈现橘黄色并且entry将直接指向这个动画。意味开始的时候就执行这个动画。之后导入的动画呈现灰色需要手动创建过渡。第一个拖进去的动画将呈现橘黄色并且entry将直接指向这个动画。意味开始的时候就执行这个动画。之后导入的动画呈现灰色需要手动创建过度。
3)创建过渡,右键anystate点击创建过度并链接需要的动画。第一次创建过渡并不会出现问题,第二次可能会出现anystate无法选中右键没有创建过渡的情况这个时候。先选中你需要创建过渡的动画按住shift在选中anystate此时右键就可以正常创建过渡了。请添加图片描述
4)在左侧的参数栏里添加参数 在参数栏中点击搜索框右边的加号就行,这里建议的是选择trigger。这里根据要使用的动画创建了三个。

请添加图片描述
5)点击anystate到各个动画的连线设置连线。在conditions中添加一个并选中为对应的trigger。walk动画就选中walktrigger以此类推。
请添加图片描述
6)在项目资源管理器中选择那些需要循环播放的动画。例如待机动画,走路动画等。将循环时间,循环动作勾选上。
请添加图片描述
7)在放入场上的模型上添加组件animator。控制器选择刚刚创建的动画控制器。
alt

3.使用代码控制动画实现人物动作

1)新建一个脚本playercontrol并挂载在人物上
2)代码如下

// an highlighted block
[header("动画")]
    public animator ator;
    private enum charactorstate
    {
        walktrigger,
        runtrigger,
        idletrigger
    }
    private charactorstate newstate;
    private charactorstate oldstate;
    void start()
    {
        ator = getcomponent<animator>();
        newstate = charactorstate.idletrigger;
        oldstate = charactorstate.idletrigger;
    }
     void update()
    {
        
        if (input.getkeydown(keycode.w))
        {
            if (input.getkey(keycode.leftshift))
            {
                newstate = charactorstate.runtrigger;
            }
            else
            {
                newstate = charactorstate.walktrigger;
            }
        }
        if (input.getkeyup(keycode.w))
        {
            newstate = charactorstate.idletrigger;
        }
        if (newstate != oldstate)
        {
            if (newstate == charactorstate.walktrigger)
            {
                ator.settrigger("walktrigger");
                oldstate = newstate;
            }
            if (newstate == charactorstate.runtrigger)
            {
                ator.settrigger("runtrigger");
                oldstate = newstate;
            }
            if (newstate == charactorstate.idletrigger)
            {
                ator.settrigger("idletrigger");
                oldstate = newstate;
            }
           
        }

    }
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com