Thực hiện đúng một Bước nhảy đôi


23

Tôi đang làm việc trên một trò chơi iPhone 2D bằng cách sử dụng Corona (Phiên bản dùng thử, vì vậy tôi không thể sử dụng diễn đàn của họ). Trò chơi liên quan đến nhân vật rơi trên bầu trời và tôi đang cố gắng thực hiện "cú nhảy đôi" cho nhân vật, để anh ta có thể nhảy lên trong khi ngã. Tôi đang sử dụng thư viện vật lý của Corona để nhân vật ngã xuống, và cho đến nay phương pháp tốt nhất để anh ta nhảy là sử dụng phương pháp xung dọc

object:applyLinearImpulse(0, -0.4, object.x, object.y)

Vấn đề tôi gặp phải là khi nhân vật chỉ mới bắt đầu (vận tốc dọc thấp), anh ta nhảy rất cao và khi anh ta ngã một lúc (vận tốc dọc cao), bước nhảy không đáng kể. Tôi đoán rằng giải pháp tốt nhất là sử dụng một số loại phương trình với vận tốc làm đầu vào để thực hiện bước nhảy giống nhau bất kể vận tốc, nhưng tôi không thể hiểu phương trình đó sẽ là gì.

Được rồi, đó là tất cả những suy nghĩ của tôi. Câu hỏi cuối cùng là, làm thế nào chính xác để bạn thực hiện một cú nhảy đôi với vật lý? Có một phương trình thích hợp cho vấn đề của tôi? Tôi có nên thực hiện một cách tiếp cận khác? Nó đã được thực hiện trước đây trong các trò chơi như Smash Bros, vì vậy có một giải pháp lặp lại, phải không?

Câu trả lời:


37

Chỉ cần đặt vận tốc dọc thành 0 và chỉ cần gọi cùng mã bạn sử dụng để thực hiện bước nhảy đầu tiên.


4
Oh. Điều đó ... thực sự hoạt động khá tốt. Và đơn giản đến mức bây giờ tôi cảm thấy thật ngu ngốc khi không nghĩ về nó. Ồ tốt Cảm ơn!
Jesse J

5
Nó thường hấp dẫn để làm cho mọi thứ trở nên phức tạp hơn mức cần thiết :)
Adam Harte

2
câu trả lời tao nhã!
lathomas64

1

Tôi không chắc chắn, nhưng tôi nghĩ các trò chơi như UT2K4 có thể sử dụng logic như thế này:
if (đã nhảy &&! Tăng gấp đôi nhảy chưa &&! Chạm đất && velocity.up là khoảng 0,0f) DoDoubleJump ();

Thành phần y hoặc z của bạn ở đâu (Tùy thuộc vào cái nào được bật lên)
Điều này có nghĩa là người chơi của bạn chỉ có thể thực hiện một cú nhảy đôi khi họ ở độ cao tối đa của lần nhảy đầu tiên của họ và sắp bắt đầu trở lại.
Tôi thích phương pháp này vì nó tạo ra một chút kỹ năng (Bạn phải có thời gian để nó xảy ra bên trong "velocity.up là khoảng 0,0f").
Tùy thuộc vào những gì bạn muốn, bạn có thể thiên vị "xấp xỉ 0,0f" đối với các số dương để chúng chỉ có thể nhảy đôi khi vẫn di chuyển lên chẳng hạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.