zoukankan      html  css  js  c++  java
  • Unity3D 之3D动画机设置

    新建一个动画机

    然后创建一些动画的属性

    每根线都是一个动画到下一个动画的转变,动画的转变是基于条件的。

    1.通过建立Parameters设定动画的转换条件

    2.右边的Conditions设定可以设定是在什么情况下进行抓换的

      

    下面的Walk是一个布尔值。

    触发器的布尔值的改变方法

     public Animator animator;

      // 使用进行初始化
      void Start () {
        cc = this.GetComponent<CharacterController>();
        animator = this.GetComponent<Animator>();
     }

     
    animator.SetBool("Walk", true);

    要实现走的时候突然跳跃功能。

    如果要实现瞬间动画,能够在某个动作触发的时候,前一个动画在没有播放完之前就进去下一个动画,就让下面的Has Exit Time为空,表示没有退出时间,就是可以直接进入下一个动画。

    然后,将动画机添加到游戏物体上

    设置动画机的触发器,当有触发器的时候,能够调用下面的动画

    在代码里面:

            //使用普通攻击
            if(Input.GetKeyDown(KeyCode.J)){
                print("-----------------");
                if (animator.GetCurrentAnimatorStateInfo(0).IsName("PlayerAttackA") && isCanAttackB)
                {
                    animator.SetTrigger("AttackB");
                }else {
                    animator.SetTrigger("AttackA");
                }
                
            }

    可以通过具体时间轴上触发事件去进行控制(可以方便控制在一个动画的某个状态切换):

    同时通过时间轴上控制触发函数可以控制在某一动画的某个时间点去调用比如攻击掉血等逻辑这样可以避免这样的逻辑在UPdate中被重复调用,

    可以达到碰撞器(进入碰撞,出去碰撞)只会接收一次碰撞的效果。

    代码:

    在Events轴上,设置触发函数。在两个函数之间能够去触发下一个动画机

        public void AttackB1() {
            isCanAttackB = true;
        }
        public void AttackB2()
        {
            isCanAttackB = false;
        }
  • 相关阅读:
    (10)时间
    (9)字符串
    (8)数组工具类
    (7)数学工具类
    (6)随机数
    (5)包装类
    (4)声明式接口和常用接口
    (3)java.lang.System
    (2)java.lang.Object
    (1)开篇
  • 原文地址:https://www.cnblogs.com/sunxun/p/5455932.html
Copyright © 2011-2022 走看看