unity2D:无限跳跃bug和卡墙bug处理

版本信息:2020.3

卡墙不掉落

成因:collider模仿真实世界,所以当碰到墙的时候恰好还按着左右键就会像你把小物块按在墙上,会产生摩擦力,所以就卡住不会掉下去了。

解决方法:给碰撞体添加没有摩擦力的材质

        先新建一Physic material 2D,这里我遇到一个问题:官方提示Assets > Create > Physics Material 2D  但是我的Create里面没有Physics Material 2D

        后来我发现这个版本里面Physics Material 2D被统一移到了2D中,所以应该是Assets >2D> Create > Physics Material 2D

        把摩擦力改成0

 

        赋值给player的碰撞体的material即可

但是这会有个bug:假如游戏开始的时刻,玩家是从空中落下的(如下图),那么就会有一个力,这个力会让玩家有一个左右移动的初始速度,恰好地面的材质没有摩擦力。这样就会形成玩家落地后自己就开始慢慢移动的bug,暂时没有看解决方法,欢迎留言

无限跳跃

解决方法:写脚本 判断条件:只有player脚踩在地上的才可以跳

加个判断即可

        //跳跃

        if(Input.GetButtonDown("Jump"))

        {

            if(Coll.IsTouchingLayers(Groud))//Coll是物体的碰撞体

            {

                rb.velocity=new Vector2(rb.velocity.x,Jumpforce*Time.deltaTime);

                Anim .SetBool("jumping",true);

                Anim .SetBool("idle",false);

            }

        }

不过这个也有个bug:就是踩到墙也会判断是踩到了地面,然后就又可以再次跳跃,希望后期可以解决

猜你喜欢

转载自blog.csdn.net/karonneveralone/article/details/119613215#comments_21998781
今日推荐