美文网首页
人物移动方法-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