Cách tôi xử lý điều này là mỗi người chơi có một isJumping
boolean, 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 == false
tô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, isJumping
vẫn sẽ như vậy false
. Bạn có thể khắc phục điều này bằng EndContact
phươ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 isJumping
tính true
khi hết va chạm với thế giới.