Người chơi di chuyển lên, anh ta đang nhảy hay leo trèo?


11

Trong một trò chơi platformer dựa trên vật lý 2D có thang trong đó, làm thế nào để bạn xác định xem người chơi di chuyển lên có phải là do nhảy hay anh ta leo lên một cái thang, để bạn biết nên chơi hoạt hình nào?

Và nói chung, rõ ràng vectơ chỉ hướng không đủ để xác định hình động để phát: làm thế nào để bạn cũng xác định nguyên nhân của chuyển động (để bạn biết chính xác sprite sử dụng)?


1
Nếu một người chơi đang ở trên một cái thang, anh ta thực sự ở trên không?
Derek

Câu trả lời:


15

Tôi có một vấn đề logic cá nhân một cách thường xuyên mà bạn dường như đang thể hiện ở đây. Có đôi khi bạn đang nhìn vào logic và lập trình từ hướng sai hoàn toàn. Trong trường hợp này, bạn dường như không nhận ra rằng ngay từ đầu bạn đã biết điều gì đang xảy ra, vì mã logic. Bạn nên biết, nói theo lập trình, cho dù anh ấy đang ở trên thang hay không.

Hãy suy nghĩ về nó (như tôi đã nói, tôi thường có vấn đề này). Logic trò chơi sẽ biết bạn đang ở trên nấc thang, giả sử rằng bạn là một lập trình viên thông minh. Để giải thích rõ hơn, tôi có một loại lưu trữ tệp và đã lãng phí khoảng một giờ mỗi ngày để cố gắng tìm ra cách lấy kích thước của dữ liệu và tôi chưa bao giờ dừng lại để nghĩ rằng, khi tôi tải tệp, bây giờ tôi biết kích thước của nó: P.

Lý do tại sao điều này chỉ liên quan đến vậy, là vì bạn đang xem nó là "Bây giờ tôi đang ở trên không, làm thế nào để tôi biết nếu tôi đang ở trên một cái thang hay nhảy?" ... Khi nào bạn thực sự nên nghĩ rằng "Tôi sắp lên sóng, nhưng bằng phương pháp nào ĐẦU TIÊN, để tôi có thể sử dụng nó cho hoạt hình sử dụng."


Đơn giản, ví dụ: OnJump()thay đổi jumpingboolean của bạn thành true, và sau đó nếu bạn ở trên không và jumpingsai, thì bạn đang ngã hoặc trên một cái thang, v.v.
Joshua Hedges

6

Hệ thống vật lý không biết và cũng không quan tâm tại sao người chơi di chuyển theo một hướng cụ thể. Chính trò chơi của bạn đã khiến hệ thống vật lý di chuyển người chơi theo cách đó, và do đó, trách nhiệm của trò chơi của bạn là phải theo dõi điều đó. Thực thể người chơi nên có một số trạng thái trên đó sẽ cho biết nếu nó đang nhảy, leo trèo, chạy, v.v. Bạn không nên cố gắng tìm hiểu điều này dựa trên những gì đã xảy ra với hệ thống vật lý.


2

Có vẻ như những gì đã từng được kích hoạt trong vụ va chạm đặt vận tốc dọc của người chơi cũng có thể được sử dụng để đặt cờ chỉ định hoạt hình nào sẽ sử dụng.

Nếu bạn đang sử dụng thư viện của bên thứ 3 quá hạn chế với thông tin mà nó cung cấp cho bạn, bạn có thể bao quanh thang bằng một hình chữ nhật và nếu người chơi di chuyển lên và chứa trong hình chữ nhật đó thì hãy thực hiện hoạt hình leo trèo.


Điều này thực sự mang đến một điểm tốt mà tôi sẽ đề cập sau này trong quá trình phát triển trò chơi của riêng mình và đó là cách thay đổi tốc độ của một hình ảnh động dựa trên vật lý. Tôi có các nhân vật mà tôi muốn vẫy tay theo cách thủ công, nhanh hơn dựa trên tốc độ chúng rơi xuống. Và tôi chưa bao giờ nghĩ ra một cách hay để làm điều đó một cách sâu sắc (đã suy nghĩ theo thời gian), nhưng ý tưởng vận tốc của bạn tốt hơn nhiều. +1 cho câu trả lời có thể sử dụng chung và không chỉ dành riêng cho trường hợp của anh ấy.
Joshua Hedges

1

Khi cài đặt tốc độ nhảy cũng đặt trạng thái ký tự thành STATE_JUMPING. Làm điều này bạn luôn biết người chơi đang ở trạng thái nào và có thể hành động phù hợp bằng cách kiểm tra trạng thái của người chơi.

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.