Làm thế nào để xác định xem nhân vật có rơi vào khoảng trống trong một người chạy / nhảy vô hạn không?


12

Tôi đang xây dựng một người chạy vô hạn 2D. Trong trò chơi, nhân vật nhảy từ cây cột sang cây cột và cây cột được tạo ngẫu nhiên. Tôi có công việc này. Nhưng làm thế nào để xác định nếu nhân vật không nhảy vào một cây cột và đã rơi vào khoảng cách giữa các trụ cột? Một trụ cột là hình chữ nhật bình thường trong hình dạng.


OT: Tôi mặc dù câu hỏi này đã được đăng trên rpg.SE và tôi nghĩ "Loại khai thác quy tắc nào đã được tìm thấy bây giờ? Vô hạn chạy như thế nào?"
o0 '.

Câu trả lời:


20

Thêm một khu vực hình chữ nhật ở dưới cùng của cấp độ, thấp hơn chiều cao tối thiểu cho phép của một nền tảng. Nếu người chơi đã giao nhau trong khu vực này, họ đã rơi ra khỏi một nền tảng.


1
Và làm cho hình chữ nhật này trở thành một đứa con của máy ảnh để nó di chuyển với máy ảnh và luôn luôn có mặt? Điều đó thật dễ dàng. Cảm ơn.
SanSolo

Ngay cả khi người chơi không thể vượt qua cấp độ, tôi nghĩ đây là một biện pháp bảo vệ tốt nếu anh ta xoay sở được.
mucaho

5
Nếu bạn thực sự kiểm tra giao lộ, hãy đảm bảo rằng nhân vật của bạn không thể rơi nhanh đến mức cắt xuyên qua bề mặt (nghĩa là một từ hoàn toàn bên trên nhân vật và khung tiếp theo hoàn toàn bên dưới).
wchargein

2
Có, trực tràng nên kéo dài xuống càng cần thiết để tránh điều này. Ngoài ra, chỉ cần kiểm tra chiều cao sẽ hoạt động, nhưng điều này cho phép bạn linh hoạt thay đổi kích thước "vùng diệt" tùy theo cấp độ.
mklingen

6
Để tránh "cắt" qua hình chữ nhật, tại sao không đơn giản if (playerPos.x < minHeight)?
Cole Johnson

24

Nếu trò chơi của bạn chỉ cuộn theo chiều ngang, bạn có thể kiểm tra xem vị trí dọc của nhân vật có nằm dưới cạnh dưới của sân khấu hay không.

Nếu trò chơi của bạn cũng cuộn theo chiều dọc (có thể hướng lên trên), bạn có thể kiểm tra xem người chơi có rơi xuống dưới mép dưới của chế độ xem hay không (tức là khu vực của sân khấu trên màn hình hoặc trong tiêu điểm của máy ảnh).

Nói chung, tình trạng tử vong là nếu nhân vật không còn "trong máy ảnh". Bằng cách kiểm soát chuyển động của máy ảnh, bạn sẽ có thể điều chỉnh lối chơi của mình. Ví dụ: nếu trong giai đoạn cuộn dọc, bạn chỉ cho phép máy ảnh của mình "cao su" xuống một chút, trong khi cho phép chuyển động hoàn toàn lên trên, bạn sẽ bị phạt sâu, rơi khỏi màn hình.


Vâng, đó cũng là một cách dễ dàng. Tôi chỉ cần tìm ra vị trí thấp nhất. Nhân vật đó có thể.
SanSolo

1
Chính xác! trong trường hợp của một thanh cuộn ngang, bạn chỉ cần kiểm tra kích thước dọc của sân khấu trong trình chỉnh sửa bản đồ của mình. Trong trường hợp máy chà dọc, bạn có thể chắc chắn rằng máy ảnh chỉ di chuyển lên trên. Theo cách đó, nếu nhân vật ngã xuống, anh ta sẽ ở dưới tầm nhìn của camera. Sau đó, bạn có thể chỉ cần kiểm tra xem vị trí dọc của nhân vật có nằm dưới ranh giới dưới cùng của chế độ xem không.
Jelle van Campen

@JellevanCampen: Bạn không nhất thiết phải giới hạn máy ảnh để di chuyển lên nhất thiết. Bạn có thể giết các nhân vật không còn "trong máy ảnh" hoặc để máy ảnh theo dõi họ xung quanh.
Vịt Mooing

Tôi không thích câu trả lời này nhiều vì nó liên kết máy ảnh trực tiếp với các ranh giới mức. Câu trả lời của mklingen hoạt động ngay cả khi giới hạn của cấp độ lớn hơn một chiều cao màn hình. Máy ảnh có thể di chuyển lên xuống để tập trung vào nhân vật, nhưng không có nguy cơ nhân vật sẽ rơi nhanh hơn máy ảnh, giữ nguyên cấp độ, nhưng vẫn va chạm với hộp ranh giới gắn trực tiếp vào máy ảnh.
Kevin

2
@Kevin: Tôi đồng ý cho các trò chơi thông thường, nhưng không phải cho các cuộn vô hạn được tạo theo thủ tục. Ví dụ, trong một cuộn dọc, bạn sẽ phải tiếp tục sinh ra các hộp mới và bỏ qua các hộp ngoài màn hình, hoặc bạn sẽ phải tiếp tục cập nhật các hộp khi máy ảnh di chuyển xung quanh. Vì điều kiện tử vong liên quan trực tiếp đến "không duy trì trong máy ảnh", nên việc buộc điều kiện vào máy ảnh là điều hợp lý. Nó cũng thực hiện nhiều hơn để thực hiện kiểm tra ranh giới camera, thay vì sinh ra các vật thể mới và dùng đến kiểm tra va chạm.
Jelle van Campen

2

Ngoài ra, để kiểm tra tọa độ dọc , bạn chỉ cần kiểm tra vận tốc dọc. Nếu nhân vật đang giảm xuống nhanh hơn so với một số ngưỡng, kết luận họ đang chết (ngay cả khi có một số nền tảng thấp đủ để vẫn đạt được, tác động sẽ gây tử vong).

Tất nhiên, điều này chỉ hoạt động nếu trò chơi của bạn thực hiện đúng cách vật lý rơi tự do cơ bản, tức là vận tốc đi xuống thực sự tăng trong mùa thu, giống như trong thực tế (cho đến khi vận tốc cuối).


1

Nếu bạn có chiều cao của các cột, bạn có thể tìm thấy thấp nhất hiện có và so sánh nó với vị trí thẳng đứng của người chơi. Nếu anh ta ở dưới cột trụ thấp nhất, không có cơ hội anh ta có thể lấy lại. Bạn chỉ có thể giới hạn kiểm tra này đối với các trụ phía sau và phía trước người chơi.

Ví dụ: Chúng tôi có 3 trụ cột, có chiều cao [10, 20, 40]. Người chơi nhảy lên cột với chiều cao 40, anh ta nhảy về phía trước 20. Anh ta cảm thấy khoảng cách giữa 40 và 20, giờ anh ta ở độ cao 15. Điều đó có nghĩa là anh ta cảm thấy. Để kiểm tra ít nghiêm ngặt hơn, hãy đợi đến khi anh ta dưới 10 tuổi.


Tất cả các trụ cột có cùng kích thước. Đó là khoảng cách ngang giữa hai trụ cột khác nhau :)
SanSolo

0

Giữ một số lượng thời gian một nhân vật đã rơi. (tức là họ đã di chuyển "xuống" bao lâu). Một khi họ đã rơi nhiều hơn một chút thời gian, theo định nghĩa, họ đã rơi khỏi sân khấu, phải khô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.