带旋转位移动画模型使用easytouch控制方案(适用于带位移和旋转的模型)

一、模型设置相关

1.
动画系统和节点的选择

2.动画片段


动画片段切割

二、动画控制器相关

1.
控制器

2.场景设置


模型参数设置

三、控制脚本

    public void move2(Vector2 v) {
        Vector3 dir = new Vector3 (v.x,0,v.y);
        Quaternion quaDir = Quaternion.LookRotation(dir,Vector3.up);
        // 判段当前朝向
        float curRotateY = transform.rotation.eulerAngles.y;
        // 目标朝向
        float destRotateY = quaDir.eulerAngles.y;
        AnimatorStateInfo stateinfo = anim.GetCurrentAnimatorStateInfo(0);
        //string name = anim.GetCurrentAnimatorClipInfo (0) [0].clip.name;
        Debug.Log ("destRotateY :" + destRotateY + "   curRotateY: " + curRotateY);
        // 误差控制   ###误差越大 开始转弯和恢复转弯 rotate带来的影响越小###
        if (Mathf.Abs (curRotateY - destRotateY) <= 20) {
            
            if (stateinfo.IsName("idle")) {
                Debug.LogError ("走路idle");
                anim.Play ("zou");
            }
            if (stateinfo.IsName ("zhuanzheng")) {
                //靠状态机变化来切换动画
                Debug.LogError ("走路zhuanzheng");
                anim.SetInteger ("zhuan2zou",1);

            }
            if (stateinfo.IsName ("zhuanfan")) {
                //靠状态机变化来切换动画
                Debug.LogError ("走路zhuanfan");
                anim.SetInteger ("zhuan2zou",2);
            }

            // ###加入开始转弯动作补充的两个 start ###
            if (stateinfo.IsName ("zoustart")) {
                //靠状态机变化来切换动画
                Debug.LogError ("走路zhuanfan");
                anim.SetInteger ("zhuan2zou",4);
            }
            if (stateinfo.IsName ("zoustart1")) {
                //靠状态机变化来切换动画
                Debug.LogError ("走路zhuanfan");
                anim.SetInteger ("zhuan2zou",3);
            }
            // ###加入开始转弯动作补充的两个 end ###
        } else {
            if (Mathf.Abs (curRotateY - destRotateY) <= 180) {

                if (curRotateY < destRotateY) {
                    //
                    anim.SetInteger ("zhuan2zou", 0);
                    //anim.Play ("zhuanzheng");
                    if (!stateinfo.IsName ("zhuanzheng") && !stateinfo.IsName ("zoustart1"))
                    anim.Play ("zoustart1");
                    Debug.LogError ("正转圈 ");


                } else if (curRotateY > destRotateY) {
                    anim.SetInteger ("zhuan2zou", 0);
                    //anim.Play ("zhuanfan");
                    if (!stateinfo.IsName ("zhuanfan") && !stateinfo.IsName ("zoustart"))
                    anim.Play ("zoustart");
                    Debug.LogError ("反转圈");


                } 
            } else {
                if (curRotateY < destRotateY) {
                    anim.SetInteger ("zhuan2zou", 0);
                    //anim.Play ("zhuanfan");
                    if (!stateinfo.IsName ("zhuanfan") && !stateinfo.IsName ("zoustart"))
                    anim.Play ("zoustart");
                    Debug.LogError ("反转圈");
                } else if (curRotateY > destRotateY) {
                    anim.SetInteger ("zhuan2zou", 0);
                    //anim.Play ("zhuanzheng");
                    if (!stateinfo.IsName ("zhuanzheng") && !stateinfo.IsName ("zoustart1"))
                    anim.Play ("zoustart1");
                    Debug.LogError ("正转圈 ");
                } 
            }
        }

    }


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,017评论 3 119
  • 终有一天醒来,我们会发现这短短长长的一生一世不过是红尘梦境一场,无论悲喜,终究会有醒来的一刻。 1 十年来,反反复...
    笔尖上起舞阅读 593评论 1 0
  • 人事间,说的最多的可能就是爱,在这个快节奏的城市,我们的爱变的有些麻木,渐渐地消失在你我的心头。 我羡慕王贵...
    梦不会远阅读 242评论 0 1
  • 学习到这里,我发现我的macOS系统已经不够用了,又不想在自己的电脑上装Linux系统,所以是时候真正的搞个Lin...
    Miridescent阅读 762评论 1 4
  • 程萱读大四那年,她23岁。这年七夕,晴空万里,碧蓝一片。 肖宇约她去海边划船。约好地点见面时,他让程萱闭上眼睛,说...
    老詹闲话阅读 942评论 2 1