美文网首页
人物移动方法-unity

人物移动方法-unity

作者: _Pman | 来源:发表于2020-07-13 12:52 被阅读0次
        public float speedSmooth=3;
        public float angleSmooth = 1;
        public float rotateSmooth = 5;
    
        private void Update()
        {
    
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            Vector3 hvVector = new Vector3(h, 0, v);
            
            if (Mathf.Abs(h)>0|| Mathf.Abs(v) > 0)
            {
                //前进速度
                speed = Mathf.Lerp(speed, hvVector.magnitude * 5.7f, speedSmooth * Time.deltaTime);
                anim.SetFloat("Speed", speed);
    
                //转向速度之方法一
                //float angle = Vector3.Angle(transform.forward, hvVector);
                //bool rotateDir = true;
                //transform.Rotate(Vector3.up, angle);
                //if (Vector3.Angle(transform.forward, hvVector) != 0 ) rotateDir = false;
                //transform.Rotate(Vector3.up, -angle);
                //transform.Rotate(Vector3.up, Mathf.Lerp(0, rotateDir ?angle:-angle, angleSmooth * Time.deltaTime));
                //方法二
                Quaternion rotation =  Quaternion.LookRotation(hvVector);
                transform.rotation = Quaternion.Lerp(transform.rotation, rotation, rotateSmooth * Time.deltaTime);
            }
            else
            {
                speed = 0;
                anim.SetFloat("Speed", speed);
            }
    

    相关文章

      网友评论

          本文标题:人物移动方法-unity

          本文链接:https://www.haomeiwen.com/subject/yhsacktx.html