Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2208.00元
Stealth秘密行动人物移动距离和动画不匹配
unsafe发起了问答2019-04-26
2
回复
326
浏览
    private void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        if (Mathf.Abs(h) > 0.1 || Mathf.Abs(v) > 0.1)
        {
            float newSpeed = Mathf.Lerp(anim.GetFloat("tSpeed"), 5.667f, Time.deltaTime * moveSpeed);
            anim.SetFloat("tSpeed", newSpeed);

            Vector3 targetDir = new Vector3(h,0,v);
            Vector3 nowDir = transform.forward;
            float angle = Vector3.SignedAngle(nowDir, targetDir, Vector3.up);

            print(angle);
            
            transform.Rotate(Vector3.up*angle*Time.deltaTime* rotateSpeed);
        }
        else
        {
            anim.SetFloat("tSpeed", 0);
        }
    }

这是我控制人物移动的代码,我在按下按钮后角色只会一卡一卡的往前移动很短的距离,但是动画已经正常往前在走了。unity版本是2018.3.6f1.

所有回复
  • 老师_Trigger 2019-04-26

    同学你好,转向用四元素,别用欧拉角,  

    Quaternion newRotation =  Quaternion.LookRotation(targetDir, Vector3.up);

    transform.rotation= Quaternion.Lerp(transform.rotation, newRotation, rotateSpeed * Time.deltaTime);

    另外检查一下其他参数的设置,可以下载一下老师源码检查排除一下问题。

    • unsafe 2019-04-28

      找到原因了,是角色身上的rigidbody组件引起的,interpolate在2018.3.6f1版本下需要设置为Interpolate或Extrapolate,否则角色不会随着动画播放正确移动

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!