我为 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 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
典型的统一跳跃如下所示:
void Jump()
{
if (_isGrounded == true)
{
rb.AddForce(Vector2.up * _jumpSpeed);
_isGrounded = false;
}
}
并且在碰撞事件中
void OnCollisionEnter (Collision hit)
{
_isGrounded = true;
}
这会限制你何时可以使用跳跃。
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消