为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕妹3242003 2023-07-22 16:37:09
我为 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;        }    }}    
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

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



查看完整回答
反对 回复 2023-07-22
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

典型的统一跳跃如下所示:


void Jump()

{

    if (_isGrounded == true)

    {

        rb.AddForce(Vector2.up * _jumpSpeed);

        _isGrounded = false;

    }

}

并且在碰撞事件中


void OnCollisionEnter (Collision hit)

{

    _isGrounded = true;

}

这会限制你何时可以使用跳跃。


查看完整回答
反对 回复 2023-07-22
  • 2 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信