Unity中Rigidbody2D角色墙角浮空无法跳跃问题求助
角色墙角浮空导致无法跳跃问题求助
为解决角色卡墙问题,我给角色添加了无摩擦物理材质,效果良好,但新问题出现:当角色朝墙角移动并跳跃后,下滑时无法接触墙角地面,会轻微浮空(游戏视图中角色浮空位置的y值约为0.0049...),导致isGrounded布尔值始终为false,无法再次跳跃。需注意,角色在此处可自由移动,但因未与地面碰撞,无法跳跃。
以下是我的基础移动代码:
using UnityEngine; using UnityEngine.InputSystem; public class PlayerController : MonoBehaviour { private PlayerInput playerInput; private InputAction moveAction; private InputAction jumpAction; private Rigidbody2D rb; private bool isGrounded; private bool isMoving = false; private float speed = 15f, jumpForce = 35f; private Vector2 moveInput; private void Awake() { rb = GetComponent<Rigidbody2D>(); playerInput = GetComponent<PlayerInput>(); moveAction = playerInput.actions["Move"]; jumpAction = playerInput.actions["Jump"]; } private void FixedUpdate() { if(isMoving) { rb.velocity = new Vector2(moveInput.x * speed, rb.velocity.y); } } private void OnEnable() { moveAction.Enable(); jumpAction.Enable(); } private void OnDisable() { moveAction.Disable(); jumpAction.Disable(); } private void OnMove() { isMoving = !isMoving; moveInput = moveAction.ReadValue<Vector2>(); } private void OnJump() { if(isGrounded) { isGrounded = false; rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); } } private void OnCollisionEnter2D(Collision2D other) { if(other.gameObject.CompareTag("Ground")) { isGrounded = true; } } }
玩家对象Inspector视图:
地面Tilemap的Inspector视图:
我已尝试以下方法:
- 修改Project Settings/Physics2D中的Default Contact Offset值接近0;
- 缩小CapsuleCollider2D的尺寸;
- 切换Collision Detection模式选项。
内容的提问来源于stack exchange,提问作者Enes Ceylan
相关产品推荐
相关产品推荐

