@[toc]unity人物基础动画应用
1.将动画或带有动画的,模型导入到unity
直接将项目拖入资源层级就好。这里推荐一个网站,可以给导入网站的模型自动绑骨,并且可挑选动画下载。网站自身也带有很多模型可以直接下载。免费又好用,就是可能网有点慢。
链接: link
2.创建动画控制器以及动画控制器设置
1)在项目管理器中右键->创建->动画控制器。双击新建的文件就会弹出动画器的控制界面啦。
2)将动画拖取到动画器中。第一个拖进去的动画将呈现橘黄色并且entry将直接指向这个动画。意味开始的时候就执行这个动画。之后导入的动画呈现灰色需要手动创建过渡。
3)创建过渡,右键anystate点击创建过度并链接需要的动画。第一次创建过渡并不会出现问题,第二次可能会出现anystate无法选中右键没有创建过渡的情况这个时候。先选中你需要创建过渡的动画按住shift在选中anystate此时右键就可以正常创建过渡了。
4)在左侧的参数栏里添加参数 在参数栏中点击搜索框右边的加号就行,这里建议的是选择trigger。这里根据要使用的动画创建了三个。
5)点击anystate到各个动画的连线设置连线。在conditions中添加一个并选中为对应的trigger。walk动画就选中walktrigger以此类推。
6)在项目资源管理器中选择那些需要循环播放的动画。例如待机动画,走路动画等。将循环时间,循环动作勾选上。
7)在放入场上的模型上添加组件animator。控制器选择刚刚创建的动画控制器。
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;
}
}
}
发表评论