unity 玩家移动时idle和run动画频繁切换

项目场景:

unity 控制玩家移动


问题描述

idle和run动画频繁切换

void Movement(){

    xVelocity = Input.GetAxisRaw("Horizontal");

    anim.SetFloat("speed",Mathf.Abs(rb.velocity.x));//跑动动画

    if(xVelocity !=0){       

        transform.localScale = new Vector3(-xVelocity,1,1);

        rb.velocity = new Vector2(xVelocity *speed*Time.deltaTime,rb.velocity.y);

    }


原因分析:

Mathf.Abs(rb.velocity.x)有时会小于0.1

状态机在speed小于0.1时run->idle,大于0.1时idle->run,Mathf.Abs(rb.velocity.x)有时会小于0.1


解决方案:

anim.SetFloat("speed",Mathf.Abs(xVelocity));//动画

void Movement(){

    xVelocity = Input.GetAxisRaw("Horizontal");

    anim.SetFloat("speed",Mathf.Abs(xVelocity));//动画speed取值0、1

    if(xVelocity !=0){       

        transform.localScale = new Vector3(-xVelocity,1,1);

        rb.velocity = new Vector2(xVelocity *speed*Time.deltaTime,rb.velocity.y);

    }

设置状态机,speed小于0.5时run->idle,大于0.5时idle->run,speed取值是0、1

猜你喜欢

转载自blog.csdn.net/n_n123q/article/details/127242452