Làm thế nào để tôi làm cho một chiếc xe di chuyển đến một điểm và dừng lại mà không cần quá mức hoặc dao động?


9

Ok, hãy xem xét chúng ta có một chiếc xe giống như chiếc xe mà tôi đã mô tả trong câu trả lời của mình cho câu hỏi này , với vị trí 2D, vận tốc, vận tốc góc và lực kéo / ma sát. Nó có thể tăng tốc và phá vỡ bởi một lượng khác nhau, nhưng không dừng lại ngay lập tức hoặc đạt tốc độ tối đa ngay lập tức. Làm thế nào tôi có thể làm cho nó di chuyển đến một điểm cụ thể và dừng lại - trong thời gian nhanh nhất có thể - mà không cần quá mức hoặc dao động?

Tôi đã suy nghĩ một cái gì đó như:

  • quay về phía vị trí mục tiêu.
  • Thúc giục
  • nhìn về phía trước 1 tick, hỏi "Nếu tôi áp dụng các lần nghỉ tiếp theo, tôi có thể vượt quá mục tiêu không?"
  • Nếu nó quá mức, hãy áp dụng các khoảng nghỉ ngay bây giờ bằng một số tiền.

Tôi chắc chắn đây là một vấn đề đã được giải quyết và có lẽ có một phương pháp tốt hơn phương pháp tôi đã mô tả.

Câu trả lời:



3

Sử dụng phép tính, nếu bạn biết vận tốc và tốc độ giảm tốc tối đa của mình thì bạn có thể biết khoảng cách dừng tối thiểu của mình. Với ý nghĩ đó, bạn có thể biết chính xác khi nào bạn cần áp dụng hệ thống phanh (lỗi làm tròn / lượng hóa sang một bên) để dừng tại một điểm nhất định.

Bây giờ, hy vọng ai đó giỏi toán hơn tôi sẽ đăng công thức thực tế ...


2
finalPositionDelta = -0.5 * sqr(currentSpeed) / maximumDecelerationTuy nhiên, điều này giả định rằng sự giảm tốc của bạn là một hằng số, tùy thuộc vào độ sâu mô phỏng của bạn có thể không phải là trường hợp. Tôi sẽ đi với giải pháp của Ranieri. (Rất tiếc, đó là sự giảm tốc DIV, không phải mul)
tenpn

Vâng, phương pháp này vẫn hữu ích ngay cả khi bạn đóng khung nó như một vấn đề của hệ thống điều khiển, bởi vì hiểu được độ dốc liên quan sẽ giúp tránh sự mất ổn định hoặc dao động trong phép đo lỗi.
Kylotan


1

Đôi khi, trong quá trình phát triển trò chơi, bạn cần thực hiện các phím tắt. Phím tắt ở đây được gọi là Impulse, trong đó, nói về thể chất là một lực rất lớn được áp dụng trong một thời gian rất ngắn. Thay vì tích hợp nó theo thời gian, bạn chỉ cần áp dụng nó cho tham số dưới dạng thay đổi trực tiếp: đặt vận tốc về 0.

Câu hỏi là: bạn có muốn sử dụng phím tắt hay không?


2
Tôi không lo lắng về việc sử dụng phím tắt nếu nó vô hình với người chơi, nhưng nếu một phương tiện có thể dừng chết tại chỗ thì nó sẽ trông rất lạ.
Iain

1
Điều đó chắc chắn là đúng, tuy nhiên nó giúp dừng chính xác tại điểm bạn muốn sau khi giải mã, do đó tránh tính toán phức tạp và phân chia bước thời gian của bạn quá nhiều lần.
ADB
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.