Làm cho một nhân vật di chuyển dọc theo một con dốc cong trong một thế giới có trọng lực


10

Tôi đã thấy trò chơi này

Quần lạ mắt 2 . Và điều tôi nhận thấy ngoài vật lý và hoạt hình đẹp là nhân vật đang di chuyển dọc theo sườn núi, thậm chí là sườn dốc. Tôi có ít kinh nghiệm về Box2d, nhưng khái niệm về độ dốc cong này là mới đối với tôi. Nó sẽ giúp ích rất nhiều cho tôi nếu ai đó khai sáng cho tôi về khái niệm này và việc thực hiện nó. Ngay cả khi việc thực hiện không có trong box2d, nó vẫn được chào đón.


2
Metanet, những người đã làm N (trong Flash) có một hướng dẫn về cách họ đã va chạm bao gồm cách họ tính toán các đường cong: metanetsoftware.com/technique/tutorialA.html
CodexArcanum

Câu trả lời:


5

Làm thế nào để bạn có được đường cong trong Box2D?

Trong phiên bản chưa được phát hành của Box2D , có hai loại hình dạng mới, b2LoopShapeb2EdgeShape , cho phép bạn tạo các đường cong từ một chuỗi các phân đoạn dòng.

Trong phiên bản đã phát hành, bạn có thể sử dụng nhiều hộp nhỏ được đặt ở các góc để có được hiệu ứng tương tự, nhưng cơ thể có xu hướng làm những việc không ổn định và bất ngờ gần các điểm kết nối. Vì vậy, tôi khuyên bạn nên sử dụng phiên bản chưa phát hành.

Làm thế nào một nhân vật có thể rơi xuống đường cong?

Làm cho nhân vật một bánh xe! Câu hỏi của tôi về vật lý platformer có một số thảo luận về vấn đề này , nhưng ý tưởng cơ bản là gắn cơ thể nhân vật của bạn lên một bánh xe quay và di chuyển bằng cách áp dụng lực quay vào bánh xe. Mặc dù (thực ra, bởi vì) bánh xe có ma sát, lực hướng xuống từ trọng lực sẽ khiến nó quay xuống dốc - giống như một bánh xe thật. Bằng cách thay đổi các thông số động cơ của khớp quay vòng, bạn có thể làm cho nó chống xoay càng nhiều càng cần thiết để tránh nó lăn xuống những góc nghiêng nhỏ.


Tôi đồng ý với bạn, khi sử dụng b2LoopShape tôi có thể tạo độ dốc như mong muốn của mình. Nhưng, theo liên kết bạn đã đăng; Vấn đề là, nó không dẫn đến một cổng flash của box2d chỉ là phiên bản c ++. 1.) Bạn có gợi ý nào cho việc đó không? hoặc 2.) Bạn có biết bất kỳ động cơ vật lý nào khác cho đèn flash cho phép tạo độ dốc cong không?
Vishnu

Tôi không nghĩ cổng Flash của Box2D được cập nhật với các loại hình / khớp mới. Tôi không biết công cụ vật lý nào có sẵn cho Flash ngoài Box2D.

@ Joe: Nếu tôi hỏi bạn, Nếu nó có khả thi nếu tôi đã thử viết một lớp AS cho b2LoopShape? Vì vậy, tôi có thể kết hợp nó vào api Box2d Flash. Tôi sẽ phải bắt đầu đi đâu? Có manh mối nào không?
Vishnu

1

Fancy Quần được tạo ra trong Flash và Flash có một phương pháp cụ thể gọi là 'hitTest' cho phép bạn kiểm tra một pixel (trong trường hợp này, anh ta có thể thực hiện 2-3 pixel hitTests dọc theo đáy của nhân vật Fancy Quần) để chống lại bất cứ thứ gì được vẽ trong một đối tượng Movieclip được chỉ định. Có thể hơi khó để làm cho nó cảm thấy đúng, nhưng chức năng tích hợp này là lý do tại sao rất nhiều trò chơi Flash có va chạm với độ dốc cong. Quá trình này phức tạp hơn nhiều đối với hầu hết các động cơ khác và thường phải được thực hiện thủ công, nhưng có một vài phương pháp khác nhau.

Phương pháp tôi quen thuộc nhất là nếu động cơ của bạn dựa trên gạch (nghĩ là Sonic the Hedgehog), các ô được chỉ định là cong có thể có một công thức xác định vị trí va chạm 'Y' dựa trên vị trí 'X' hiện tại của nhân vật trên gạch đó. Bạn sẽ phải xác định công thức dựa trên độ dốc của độ dốc và độ cong mà bạn đang tìm kiếm. Bạn có thể sử dụng máy tính vẽ đồ thị hoặc chương trình vẽ đồ thị để thử nghiệm các công thức. Bạn có thể có nhiều ô với các đường cong và công thức khác nhau được liên kết với chúng theo cách này.


Sonic không có công thức đường cong cho gạch. Nó sử dụng bản đồ chiều cao 2d cho mỗi pixel.
Tấn côngHobo

@AttackingHobo: Bạn có thể cho tôi biết bản đồ 2 chiều cho mỗi pixel là gì không hoặc bạn có thể chỉ cho tôi một nơi mà tôi có thể sử dụng nó trong các trò chơi flash của mình không?
Vishnu

2
info.sonicretro.org/Sonic_Physics_Guide Hãy xem cái này. Tôi không biết nếu điều này sẽ giúp bạn nếu bạn sử dụng hộp 2d. Bạn có thể phải lăn động cơ vật lý của riêng bạn.
Tấn côngHobo

@Attacking Hobo: Có bất kỳ lợi thế hoặc khả năng nào trong việc "làm" các đường cong cong Nếu tôi thử tạo một lớp AS 3.0 cho phép các vòng lặp trong api box2d không?
Vishnu
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.