zoukankan      html  css  js  c++  java
  • AnimatorController动画融合树

    通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不能直接简单地用Translation连起来了,而应该使用动画融合树。

    准备工作:一个人物模型,一个待机动画,一个行走动画,一个奔跑动画。

    通常游戏中,我们人物从待机到跑直接切换就行,今天我们加一个行走的过渡效果吧。
    创建一个动画控制器AnimatorController,将人物的Animator组件的Controller属性指向我们刚才创建的AnimatorController。
    在AnimatorController中添加一个空状态Idel,然后设置动画片断为我们的待机动画。
    然后再创建一个动画融合树WalToRun:
    无标题
    双击融合树进入编辑状态,在右侧的Inspector面板中的Motion列表中添加两个元素,从上到下依次选择我们的行走动画和奔跑动画。
    创建float类型动画参数Run,将融合树的Parameter参数设置为Run:
    QQ截图20151007164124
    最后,将待机状态Idel使用Translation连接到融合树,设置Condition参数为 Run Greater 0.1,反过来融合树到Idel的连接Condition设置为 Run Less 0.1。

    一切就绪,在Player身上添加脚本DearMove:

     1 using UnityEngine;
     2 using System.Collections;
     3  
     4 public class DearMove : MonoBehaviour
     5 {
     6     private Animator anim;  //动画状态机
     7     private int RunFloat;   //Run参数ID
     8     private float vertical; //前进
     9  
    10     void Awake ()
    11     {
    12         anim = gameObject.GetComponent<Animator>();
    13         RunFloat = Animator.StringToHash("Run");
    14     }
    15      
    16     void Update ()
    17     {
    18         //呼叫方向控制
    19         vertical = Input.GetAxis("Vertical");
    20         //根据前进控制,设置Run参数的值,
    21         //后面两个参数可不加,这里是为了让从走到跑看得更明显
    22         anim.SetFloat(RunFloat, vertical, 1f, Time.deltaTime);
    23     }
    24 }

    运行游戏,按住 W 键,可以看到Player从走慢慢过渡到跑咯!

  • 相关阅读:
    c++ 连接mysql数据库
    c语言数据结构分析2之 链表插入删除
    c语言数据结构分析1之 链表创建
    微软 翻译工具
    c语言数据结构分析7之 二分查找
    sencha touch2 demo
    程序员装B指南
    c语言数据结构分析6之 快速排序
    c语言数据结构分析5之 冒泡
    对话jQuery之父John Resig:JavaScript的开发之路
  • 原文地址:https://www.cnblogs.com/zhenlong/p/4870956.html
Copyright © 2011-2022 走看看