2012-03-01 21 views
5

Được rồi, vậy vấn đề này đã làm phiền tôi trong thời gian dài nhất. Bất cứ ai có thể chỉ cho tôi hoặc chỉ cho tôi một thuật toán có thể điều khiển một chiếc xe giống như của GTA2? Sau 3 ngày nghiên cứu tất cả tôi có thể đưa ra là tất cả các thuật toán này để sử dụng trục và khớp trên bánh xe và bánh xe riêng biệt và như vậy. Đó có phải là cách duy nhất để đạt được chuyển động xe đơn giản giống như của GTA2?GTA2 như Vật lý xe hơi, nhưng cực kỳ đơn giản

Tôi muốn có thể sử dụng thuật toán trên hình chữ nhật không có bánh xe nhưng vẫn có thể có trôi xe. Điều đó có thể không? Nhân tiện, tôi đang sử dụng Box2D cho trò chơi 2D.

Tôi biết điều này phù hợp hơn với gamedev nhưng vì một lý do nào đó tôi không thể đăng câu hỏi.

+0

Điều này thực sự rộng ... chắc chắn là có thể, bạn đang gặp phải vấn đề gì? – iforce2d

+0

Tôi đoán vấn đề tôi đang gặp phải là thực hiện một thuật toán đơn giản trong Java được gọi trên mọi khung hình để tạo ra một ổ đĩa giống như của GTA2 trò chơi. –

+2

Ok vì vậy phần bạn gặp vấn đề là ... toàn bộ điều :) Tôi đã hy vọng một số hành vi cụ thể mà bạn cần, ví dụ tôi nghĩ hủy bỏ vận tốc ngang của xe sẽ là một yêu cầu điển hình. Tôi đã tự hỏi nếu bạn đã nhìn thấy một trong những điều này: http://www.iforce2d.net/b2dtut/top-down-car Phần đầu tiên nhìn vào một số điển hình trên xuống vật lý xe hơi áp dụng cho một cơ thể duy nhất. Sau đó nó sử dụng bốn trong số những cơ quan như bánh xe nhưng bạn có thể điều trị cơ thể duy nhất như một chiếc xe nếu bạn muốn. – iforce2d

Trả lời

7

Câu trả lời đơn giản có thể biến thành thứ gì đó khá lớn nên tôi sẽ cố gắng giải thích bằng cách trình bày các điểm khác nhau theo thứ tự ngày càng tăng của sự tinh tế. Tôi sẽ giả định một kiến ​​thức cơ bản về vật lý.

  1. Giả sử bán kính quay cố định (không quá tệ nếu bạn sử dụng bàn phím, khá khó chịu nếu bạn có bộ điều khiển tương tự). Không có gì giống như thử các vị trí khác nhau để tìm ra bán kính cảm thấy tốt.

  2. Giả sử bạn có bánh xe ban đầu hướng về phía trước và khi bạn nhấn phím rẽ, chúng dần chuyển sang mức tối đa có thể. Điều này về cơ bản có nghĩa là giảm bán kính từ vô cực đến bán kính nhỏ nhất có thể của bạn (bạn có thể tìm ra mối quan hệ giữa góc bánh xe và bán kính dễ dàng). Nếu bạn có bộ điều khiển tương tự thì bán kính phải được kiểm soát bởi các giá trị liên tục của đầu vào tương tự.

  3. Để cho các lực lượng vào! Khi bạn đang rẽ trong một chiếc xe hơi, bạn chỉ quay lại do tăng tốc theo tâm. Sự tăng tốc của tâm là do lực tác dụng thực sự là ma sát của chiếc xe với con đường. Bạn có thể xem xét ma sát một hằng số và khối lượng của hằng số xe mà không có vấn đề lớn sau đó bạn có một mối tương quan giữa vận tốc của xe và bán kính quan trọng (bán kính tối thiểu bạn có thể bật tốc độ). Gia tốc tâm là a = v^2/r = Ma sát/khối lượng nên bán kính tới r = v^2 * khối lượng/ma sát. Bạn có thể xem xét rằng dù bạn quay xe bạn sẽ trôi dạt đến mức nào và tối đa, hãy mô tả đường cong này. Điều này sẽ cung cấp cho bạn một mô phỏng tốt đẹp nhưng vẫn không phải là "mất kiểm soát" cảm giác. Để biết điều này, hãy xem điểm tiếp theo! circular motion

  4. Lý thuyết chính xác giống như ở điểm trước nhưng điều chính là Ma sát trong thực tế không phải là hằng số. Trong thực tế, ma sát tĩnh sẽ luôn cao hơn ma sát động lực. Trong thực tế, bạn nên có ma sát tĩnh và ma sát động (nhỏ hơn). Bạn tính r theo ma sát tĩnh và khi vận tốc của bạn quá lớn để đạt được r (đó là khi bạn sẽ trôi dạt) bạn bắt đầu tính toán r mới bằng ma sát động học. Điều này sẽ cho bạn cảm giác mất kiểm soát nhưng chiếc xe vẫn không quay. Friction

  5. Để xem spin, bạn sẽ phải xem xét các lực được áp dụng trong mỗi bánh xe (thực tế là các bánh xe khác nhau dưới các lực khác nhau khiến xe quay) và xem xét một số vật lý tiên tiến hơn bánh xe nào là bánh lái và cũng xem xét ma sát động học không phải là hằng số. Tuy nhiên tôi tin rằng điều này nằm ngoài phạm vi của bạn.

  6. Hoặc bạn có thể làm điều gì đó mà GTA2 dường như làm. Thời điểm bạn biết bạn sẽ trôi hoặc trôi quá nhiều (bạn thiết lập một ngưỡng ở đây) chỉ lập trình làm cho chiếc xe mất kiểm soát và quay.

Hy vọng điều này sẽ giúp, nếu bạn có bất kỳ nghi ngờ cụ thể nào, hãy hỏi.

1

Tôi tìm thấy các http://www.banditracer.eu/carexample/ đã chứng minh một ví dụ đơn giản để sử dụng Box2D để hiển thị chuyển động của ô tô. http://www.banditracer.eu/ có một trò chơi mã nguồn mở mà bạn có thể quan sát để xem nó có chuyển động trôi mà bạn đang tìm kiếm hay không. Bạn có thể kiểm tra mã và xem cách họ xử lý các chuyển động trôi và làm tương tự cho dự án của bạn.

Các vấn đề liên quan