人物移动方法-unity

2020-07-13  本文已影响0人  _Pman
    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);
        }
上一篇下一篇

猜你喜欢

热点阅读