【 unity3d 】模型的使用,旧版本动画系统

前言

使用人体模型通常由美术给我们,此时拿来用时需要对其模型的动画进行控制,来播放动画,
这时可以使用Animation脚本来控制模型的动画
Animation脚本: 旧版本动画,用来给模型播放动画的组件

mode的主要功能介绍

  1. ScaleFactor 用来调整大小比例,这样就不要(也不能)在模型的Transform组件的scale大小设置比例了
    1
  2. 动画类型->旧版本Legacy、新版本(一般Generic、类人Humanoid)
    2
  3. 动画分割->根据帧数分割,如果有一个一连串的动画,则可以根据帧数分割成多个动画
    3
  4. Animation组件使用
    给模型中Animation组件添加默认动画片段,给一个模型添加多个动画
    4

动画类型

Animation 类

isPlaying 属性: 是否正在播放动画
IsPlaying 方法: 是否正在播放动画
Play方法:播放某个动画
Stop方法:停止当前所有动画,有个重载,传入某个动画名,停止某个动画
CrossFade方法:播放动画切换有一个时间的过渡(淡出淡入)

public bool Play (string animation);
public extern bool isPlaying {
    get;
}
public extern bool IsPlaying (string name);
public void Stop ();
public void CrossFade (string animation, float fadeLength);

用脚本代码控制模型播放动画

using UnityEngine;
using System.Collections;

public class AnimationTest : MonoBehaviour {

    private Animation _ani;

    void Awake(){
        _ani = GetComponent<Animation> ();
    }

    void Update(){
        //点击鼠标左键,角色播放攻击动画
        if (Input.GetMouseButtonDown (0)) {
            //_ani.Play ("Attack");
            _ani.CrossFade ("Attack", 0.5f);
        }
        //如果角色没有正在播放动画
        if (!_ani.isPlaying) {
            _ani.Play ("Idle");
        }

        if (Input.GetKey (KeyCode.A)) {
            _ani.Play ("Run");
        }
        if (Input.GetKeyUp (KeyCode.A)) {
            _ani.Play ("Run");
        }

        Debug.Log (_ani.IsPlaying ("Idle"));//测试是否播放动画
    }
}

注意:

如果是要写边跑边攻击这种动画,如果通过程序写跑动画和攻击动画,则叫动画融合,但是一般都是让美术再做一个动画(边跑边攻击),效果更好。

猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/80999225