Cách tôi xử lý điều này là mỗi người chơi có một isJumpingboolean, khi họ nhảy, được đặt thành true. Khi chúng va chạm với một bề mặt, tôi kiểm tra xem đó có phải là thứ gì đó mà chúng có thể nhảy ra và các quy định khác như chúng có đứng thẳng không, v.v. và đặt nó thành false.
Sau đó, khi họ cố gắng nhảy, nếu bề mặt họ đang hoạt động tốt và isJumping == falsetôi cho phép họ nhảy, nếu không họ không thể nhảy. Tôi nghĩ rằng điều này tốt hơn so với tính toán va chạm mỗi khi bạn muốn xem liệu họ có nhảy không.
Chỉnh sửa
Như @BlueRaja chỉ ra bên dưới, nếu người dùng rời khỏi rìa, isJumpingvẫn sẽ như vậy false. Bạn có thể khắc phục điều này bằng EndContactphương pháp của Trình lắng nghe Liên hệ (xem tài liệu môn phái Box2D 9.4 . Bạn chỉ cần đặt thuộc isJumpingtính truekhi hết va chạm với thế giới.