Trò chơi xe đạp - đi theo con đường


7

Tôi đang viết một trò chơi bằng java có một chiếc xe đạp đang đi trên đường. Tôi dự định thêm một số chướng ngại vật trên đường là những công trình có độ dốc, mà người đi xe đạp phải thương lượng. Nói cách khác, chiếc xe đạp phải leo lên và chạy dọc theo con dốc bất cứ khi nào nó gặp phải vì vậy rõ ràng nó phải được căn chỉnh chính xác với đường dốc. Tôi hiện đang làm điều này bằng cách sử dụng các hàm trig để tìm góc quay, tọa độ xy cho xe đạp khi đang leo, giảm dần, v.v ... Ai đó có thể đề xuất một thuật toán tốt hơn để đạt được điều này không?


Đây là từ trên xuống hoặc nhìn từ bên cạnh?
Anko

Cảm ơn Anko - trò chơi có góc nhìn thẳng vĩnh viễn
Bloke

Câu trả lời:


1

Tôi không nghĩ rằng bạn có thể tránh được trig thực sự, nhưng những gì bạn có thể làm là cải thiện cách bạn tính toán góc.

Câu hỏi của bạn đề cập đến "tọa độ xy cho xe đạp", nhưng trên thực tế, chiếc xe đạp không có một tọa độ. Nó có hai tọa độ - hai bánh xe.

Cụ thể, đừng căn cứ vào vị trí của xe đạp và một điểm duy nhất. Nếu bạn chỉ sử dụng một điểm cố định duy nhất (như ở giữa xe đạp), nó sẽ không hoạt động khi xe đạp đầu tiên đi vào dốc - bánh trước của xe đạp sẽ không nhô lên cho đến khi điểm giữa đi lên dốc.

Đây là hình ảnh của nó sẽ trông như thế nào nếu bạn tính toán từ giữa và chỉ cần đi vào một dốc ...

nhập mô tả hình ảnh ở đây

Thay vào đó, hãy tính toán vòng quay dựa vào nơi bánh trước và sau chạm đất. Tính Y ở bánh sau, rồi Y ở bánh trước, sau đó góc giữa hai điểm là bao nhiêu. Sau đó, bạn có thể làm cho nó hoạt động với mặt đất không bằng phẳng, và chuyển động sẽ đáng tin hơn rất nhiều, và sẽ trông như thế này ...

nhập mô tả hình ảnh ở đây

Điều này cũng sẽ cho phép bạn xử lý các va chạm nhỏ độc đáo. Dựa trên độ dốc của bánh xe đến bánh xe, bạn sẽ thực sự có bánh trước của xe đạp đi qua vết sưng, đi xuống phía bên kia, sau đó cho bánh sau đi qua nó. Tính toán dựa trên một điểm (giữa xe đạp), bạn sẽ nhận được ...

nhập mô tả hình ảnh ở đây

Nhưng tính toán dựa trên bánh xe đạp, bạn sẽ có được điều này ...

nhập mô tả hình ảnh ở đây


0

Đó là ít nhiều làm thế nào tôi cũng sẽ làm điều đó. Một điều bạn có thể thử là để các mảnh đất có chứa một vectơ bình thường mà bạn có thể nhanh chóng truy vấn để căn chỉnh chiếc xe đạp với độ dốc.


Chuẩn hóa vectơ chủ yếu được sử dụng khi bạn muốn vectơ có độ dài bằng 1. Một cách sử dụng khác là nếu bạn muốn vectơ có độ dài cụ thể thì bạn sẽ chuẩn hóa vectơ đảm bảo vectơ có độ dài bằng 1 và sau đó nhân với số bạn muốn chiều dài của nó là.


Cảm ơn - Tôi thực sự mới đối với lập trình liên quan đến tính toán trig nên tôi đang vật lộn với các biến đổi. nhưng sau một số thực hành và làm theo các hướng dẫn web khác nhau, ive đã quản lý để viết các hàm của riêng tôi trong mã của tôi để thao tác xoay và tốc độ. Có một điều vẫn làm tôi bối rối. Tôi đã đọc rất nhiều về thuật ngữ chuẩn hóa vectơ và tôi có được khái niệm này nhưng bạn có thể chỉ cho tôi cách sử dụng nó trong mã không?
Bloke

ví dụ trong một trò chơi khác, tôi đã có một chiếc máy bay trực thăng bay xung quanh và bắn đạn vào phím bấm của người dùng. Bây giờ có thể có một số đối tượng kẻ thù trên màn hình khi viên đạn được bắn ra. Rõ ràng viên đạn sẽ không nhắm vào bất kỳ kẻ thù cụ thể nào vì viên đạn phải tuân theo vị trí và hướng của trực thăng khi bắn. Nhưng nếu viên đạn va chạm với kẻ thù trên đường đi, thì cả viên đạn và kẻ thù đều biến mất và người dùng ghi được một điểm.
Bloke

Bây giờ tôi đang làm tất cả điều này chỉ đơn giản bằng cách kiểm tra xem tọa độ của kẻ địch có va chạm với viên đạn không. Vì vậy, nó sẽ đại khái giống như ... nếu đạn.X == kẻ thù.X VÀ viên đạn.Y == kẻ thù.Y. Rõ ràng tôi cũng tính đến kích thước của chúng. Điều này cho phép tôi đạt được kết quả tôi muốn nhưng tôi không sử dụng vectơ ở đây. Khái niệm chuẩn hóa véc tơ có thể được sử dụng trong ngữ cảnh này cho mã tối ưu hơn hoặc sạch hơn không?
Bloke
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.