自学unity之人物动画控制(第一篇)


本人新手,初学unity时间不长,刚刚做了个控制角色动画的demo,在此记录下以方便以后查阅,如果有错误的地方还请指出,在此感激不尽。

我从网上找了一几个模型,都是max文件,从中挑选一个带动画的,是一只霸气的猴子。利用3dmax将这只猴子导出成FBX格式(方便unity使用)。

自学unity之人物动画控制(第一篇)_第1张图片


将导出的fbx文件拖只unity的project的一个目录下(下图中的monkey文件),我放的是Assert/prefabs中,展开fbx文件可以看到模型的机构,其中有身体、棒子、贴图..还有接下来要说的动画(下图中的Take 001)。

自学unity之人物动画控制(第一篇)_第2张图片


将monkey拖置Hierarchy中,运行场景,结果猴子不会动.....google了一下,解决办法是选中工程(project)里的monkey.fbx,此时Inspector模块下有个选项Rig,将其中的aniimation Type 改为Legacy,测试在运行场景,猴子开始左右挥棒。哈哈...


现在猴子的动作是一连串的,我要的控制它的动作,

第一步、切割动画

选中工程(project)下的mokey,在Inspector中,出现Model、Rig、Animation三个大属性,选择Animation,在Clips下添加切割动画,我加了三个动画(名称分别是“left_attack","right_attack","power_attack”


自学unity之人物动画控制(第一篇)_第3张图片


添加代码PlayerControler.cs


using UnityEngine;
using System.Collections;


public class PlayerControler : MonoBehaviour {


    private  string[] attacks = {"left_attack","right_attack","power_attack"};
    private int attack_index = 1;   


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {


        if (Input.GetKeyUp(KeyCode.Space) && !animation.isPlaying)
        {
            playAttack(attack_index);
            attack_index = (attack_index) % attacks.Length +1;
        }
}


    public void playAttack(int index)
    {
        if (index > attacks.Length || index < 1)
            index = 1;
        animation.Play(attacks[index-1]);
    }
}


Ok,大功告成,运行场景,美按一次空格切换到下一个动作,好一只霸气的猴子

自学unity之人物动画控制(第一篇)_第4张图片


如果想在某一个动作中加关键帧时,发现动作都是read-only ;解决办法:选中那个动作ctrl+d将动作复制出来,假定文件是d.anim,将在Hierarchy中的monkey的该动作对应的动画切换为d.anim,再次查看物体动画已经可以修改了。


第一次写博客,写的比较幼稚,以后会经常写,见谅!!!


你可能感兴趣的:(unity,android)