Làm thế nào để các động cơ tránh được Giai đoạn Khóa Khóa (nhiều đối tượng trong cùng một vị trí) trong Công cụ Vật lý?


8

Để tôi giải thích Khóa pha trước: Khi hai vật có khối lượng khác không chiếm cùng một không gian nhưng có năng lượng bằng không (không có vận tốc).

Chúng có va chạm mãi mãi với các vectơ độ phân giải vận tốc bằng không hay chúng chỉ bị khóa với nhau cho đến khi một lực bên ngoài tương tác?

Trong động cơ ủ nhà của tôi, tôi nhận ra rằng nếu tôi tải một nhân vật vào một cái cây và di chuyển chúng, chúng sẽ báo hiệu một vụ va chạm và nhảy trở lại vị trí ban đầu của chúng. Tôi cho rằng tôi có thể khắc phục điều này bằng cách thực hiện các xung trong trường hợp va chạm thay vì chỉ quay trở lại vị trí cuối cùng mà tôi đang ở (loại thực thi của tôi là hút).

Nhưng trong khi tôi làm cho động cơ của mình mạnh mẽ hơn, tôi chỉ tò mò về cách mà hầu hết các động cơ vật lý khác xử lý trường hợp này. Các vật thể bắt đầu ở cùng một điểm không có tốc độ di chuyển chỉ bắn ra từ nhau theo một hướng ngẫu nhiên? Hay họ ngồi đó cho đến khi có chuyện gì xảy ra? Lựa chọn nào nói chung là cách tiếp cận tốt nhất?


3
Tôi không thể nói với một triển khai thực tế (do đó là một nhận xét thay vì một câu trả lời), nhưng theo kinh nghiệm của tôi, các động cơ vật lý thường sẽ từ từ đẩy hai vật thể ra khỏi nhau. Ví dụ, nếu hai hộp sinh sản chồng lên nhau, chúng sẽ từ từ đẩy nhau ra xa cho đến khi tách biệt hoàn toàn. Chính xác làm thế nào điều này sẽ được thực hiện là để xem xét.
kevintodisco

Vâng, tôi nhận ra đây là một câu hỏi kỳ quặc, vì nó không hỏi quá nhiều về cách thực hiện nó, nhưng nhiều hơn là cách nó thường được xử lý. Cảm ơn vì đầu vào của bạn!
C0M37

Câu trả lời:


4

Tôi đoán loại kết thúc này là một câu trả lời ...

Tôi nghĩ đôi khi nó phụ thuộc vào việc thực hiện và cách tiếp cận cơ bản được sử dụng để phát hiện và giải quyết va chạm (giống như 80% của một động cơ vật lý cơ thể cứng nhắc, tôi đoán vậy). Thật buồn cười vì tôi vừa gặp vấn đề này vào một ngày khác trong động cơ vật lý tự trồng tại nhà của mình và ném một vật thể vào không gian NaN.

Tôi có một vật thể sinh ra ở cùng một điểm với một vật thể khác và cả hai đều có hình dạng giống nhau. Trong trường hợp cụ thể này, bộ tạo tiếp xúc tạo ra các giá trị rất xấu. Tôi đã sửa nó bằng cách chọn các giá trị tùy ý cho tiếp điểm (về cơ bản đẩy vật nhỏ hơn / nhẹ hơn lên). Đây là một cắt khá đẹp và khô, mặc dù.

Nếu một chiếc ghế được sinh ra bên trong một cái bàn thì nó sẽ phụ thuộc vào những liên hệ được tạo ra cho dù chúng bay xa nhau hay bị mắc kẹt. Trong trường hợp của tôi, tôi không sử dụng một hệ thống dựa trên các ràng buộc (ít nhất là chưa), vì vậy đối tượng cũng có khả năng thổi ra như dao động và ngủ thiếp đi. Trong một hệ thống thâm nhập + thúc đẩy như hệ thống tôi sử dụng, thật dễ dàng để thấy tất cả những điều xấu xí và kết quả của nó. Tôi không biết làm thế nào một hệ thống dựa trên các ràng buộc giải quyết vấn đề này hoặc nếu nó thậm chí phát hiện ra nó ... ràng buộc đó dường như không thể tiếp cận được với tôi mà không có sự can thiệp nào và tôi không biết liệu có cách nào chuẩn cho các loại động cơ đó không.

Những người khác chắc chắn sẽ có những điều thông minh hơn để nói nhưng điều này quá dài cho một nhận xét.


Tôi đánh giá cao câu trả lời của bạn. Tôi cảm thấy muốn hỏi câu hỏi này như một chiếc bè cứu sinh để người khác tìm thấy nếu họ bị rơi vào tình huống tương tự.
C0M37

Lol @PSpeed ​​cũng ở đây ^^
SHiRKiT

0

Điều này được xử lý theo hai cách:

  1. Sửa lỗi trùng lặp giữa các vật thể có thể va chạm
  2. tạo ra một lực "bình thường" sẽ đẩy các vật thể ra xa nhau, nếu chúng va chạm.

Điều này chỉ hoạt động, tuy nhiên, nếu bạn đang phân biệt vận tốc / thời gian. Nó sẽ không hoạt động trong một trò chơi xếp gạch, và sẽ dẫn đến các vật phẩm có thể nhìn thấy, chẳng hạn như một đối tượng hoặc chui qua một đối tượng hoặc bị đẩy ra khỏi đối tượng khác một cách rõ ràng.

Trong trường hợp trò chơi xếp gạch, bạn có thể thực hiện một cách tiếp cận dự đoán, bằng cách kiểm tra xem đối tượng sẽ ở đâu nếu nó di chuyển. Nếu chuyển động sẽ gây ra khóa pha, thì không cho phép chuyển động.

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.