如何阻止玩家部分穿过地面

我为 2d 角色制作了一个控制器,我修复了玩家在墙上抖动的问题,但我无法修复玩家在地面上抖动的问题。从多个教程和调整内容中获取了此代码。如果您有任何提示,我们将不胜感激,我是这方面的新手,正在开发我的第一个游戏(因为我放置了太多代码而不得不闲逛),谢谢。


{

    public float speed, height;

    Rigidbody2D rb;

    private bool horizontalRight = false;

    private bool horizontalLeft = false;

    private bool verticalMove = false;


    private void Start()

    {

        rb = GetComponent<Rigidbody2D>();

    }




    void Update()

    {

        if (Input.GetAxisRaw("Horizontal") > 0)

        {

            horizontalRight = true;

        }

        else if (Input.GetAxisRaw("Horizontal") < 0)

        {

            horizontalLeft = true;

        }

        if (Input.GetButton("Jump") && rb.velocity.y == 0)

        {

            verticalMove = true;


        }


    }


    private void FixedUpdate()

    {

        if (horizontalRight == true)

        {

            transform.Translate(Vector2.right * Time.deltaTime * speed);

            horizontalRight = false;

        }

        else if (horizontalLeft == true)

        {

            transform.Translate(Vector2.left * Time.deltaTime * speed);

            horizontalLeft = false;

        }

        if (verticalMove == true)

        {

            rb.velocity = new Vector2(0, height);

            verticalMove = false;


        }

    }



}    


慕妹3242003
浏览 111回答 2
2回答

12345678_0001

激活刚体上的连续碰撞检测,只要它们通过速度移动,它就会阻止它们逐步穿过物体。

斯蒂芬大帝

典型的统一跳跃如下所示:void Jump(){&nbsp; &nbsp; if (_isGrounded == true)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; rb.AddForce(Vector2.up * _jumpSpeed);&nbsp; &nbsp; &nbsp; &nbsp; _isGrounded = false;&nbsp; &nbsp; }}并且在碰撞事件中void OnCollisionEnter (Collision hit){&nbsp; &nbsp; _isGrounded = true;}这会限制你何时可以使用跳跃。
打开App,查看更多内容
随时随地看视频慕课网APP